标签: spatialite

NoSQL和空间数据

你们有没有使用NoSQL(非关系型)数据库存储空间数据的经验?是否有任何潜在的好处(速度,空间......)使用这些数据库来保存桌面应用程序的数据(与使用SpatiaLite或PostGIS相比)?

我已经看过关于将MongoDB用于空间数据的帖子,但我对一些性能比较感兴趣.

gis spatial nosql spatialite

37
推荐指数
3
解决办法
2万
查看次数

如何打开.SQLite文件

我试图在Windows上打开.sqlite文件,但我不知道如何.你知道一个好的计划吗?

它包含用于统计分析的数据,但我更喜欢使用.txt文件.

我也有一个.spatialite文件.你能帮助我吗?

sqlite file spatialite

24
推荐指数
4
解决办法
11万
查看次数

Python中的spaceite的Sqlite load_extension失败

我正在尝试使用Spatialite beta版本3.0,因为我在64位计算机上使用Windows 7.

sqlite3.OperationalError: The specified module could not be found.尝试加载时始终遇到可怕的错误 libspatialite-4.dll.

我尝试过以下方法:

  • put libspatialite-4.dll和所有其他dll在同一个文件夹中
  • 使用dll的完整路径
  • 将dll位置添加到'PATH'环境变量
  • 将dll位置作为Python代码的一部分附加到sys.path属性
  • 复制c:\windows\system32文件夹中的所有dll (完成重启机器)
  • 复制c:\windows\sysWoW64文件夹中的所有dll (完成重启机器,这应该是32位dll,但我还是尝试过)

我的代码如下:

import sqlite3
conn = sqlite3.connect(":memory:")
conn.enable_load_extension(True)
conn.execute('SELECT load_extension("libspatialite-4.dll")')
Run Code Online (Sandbox Code Playgroud)

注意 - 我也试过了完整的路径而没有运气.我记得在Windows XP 32位上遇到了同样的问题.我得到它的工作,但不记得我做了什么:(

UPDATE

我已经在32位Windows 7上测试了设置,并将所有dll放在System32文件夹中.因此,这表明64位设置存在一些问题.可能是我需要另一个版本的MSVC(我不认为Spatialite网站说哪个是必要的,所以我可能只需要猜测 - 我安装了MSVC2010)?

python sqlite spatialite

10
推荐指数
1
解决办法
7590
查看次数

在Spatialite中获取米的距离而不是度数

我有以下查询:

select distance(GeomFromText('POINT(8 49)',4326),GeomFromText('LINESTRING(8.329969 49.919323,8.330181 49.919468)',4326))
Run Code Online (Sandbox Code Playgroud)

这给了我0.97度.但我需要它以米为单位,并且不知道要转换为哪个SRID.

有人可以举个例子来说明如何以米为单位获得空间效果吗?

这些职位都在欧洲.

sql geospatial spatialite

10
推荐指数
2
解决办法
1万
查看次数

无法使用spatialite创建列 - >意外的元数据布局

我对spaceite非常新.我在Max OS Mountain lion上运行,我安装了SQLite版本3.7.17和libspatialite 4.1.1(使用自制程序)

我可以在SQLite中加载没有错误的扩展libspatialite:

SELECT load_extension('/usr/local/Cellar/libspatialite/4.1.1/lib/libspatialite.dylib');
Run Code Online (Sandbox Code Playgroud)

我可以创建一个简单的表:

sqlite> CREATE TABLE test_geom (
   ...>   id INTEGER NOT NULL
   ...>     PRIMARY KEY AUTOINCREMENT,
   ...>   name TEXT NOT NULL,
   ...>   measured_value DOUBLE NOT NULL);
Run Code Online (Sandbox Code Playgroud)

但是当我添加带有spatialite的Geometry列时,我收到以下消息:

sqlite> SELECT AddGeometryColumn('test_geom', 'the_geom',4326, 'POINT');
AddGeometryColumn() error: unexpected metadata layout
0
Run Code Online (Sandbox Code Playgroud)

我不知道解决这个问题.有人可以帮忙吗?

sqlite macos spatialite

10
推荐指数
2
解决办法
1989
查看次数

获得适用于x64 c的SpatiaLite + SQLite系统#

我需要在x64窗口下创建和访问一个spaceite扩展的SQLite数据库.

我已经下载了所谓的最新版本1.0.92.0 sqlite-netFx45-static-binary-bundle-x64-2012-1.0.92.0.zipSystem.Data.SQLite.它是从我的Visual Studio(2012)项目中引用的,并且它本身似乎工作得很好.

我还有最新的预编译x64 spatiaLite版本4.1.1,名为spatialite-4.1.1-DLL-win-amd64.zip来自spatialite的所有dll都存在于执行目录中.

当我尝试加载扩展时:

using (var conn = new SQLiteConnection("Data Source=\"" + _sqLiteFullName + "\""))
{
    conn.Open();
    conn.EnableExtensions(true);
    conn.LoadExtension("libspatialite-4.dll");
    ...
}
Run Code Online (Sandbox Code Playgroud)

我得到一个AccessViolationException(试图读取受保护的内存.这通常表明其他内存已损坏)LoadExtension().

我注意到使用PE Deconstructor(确定dll/exe的bitnewss的软件),它说我的System.Data.SQLite.dll(来自x64包)的副本实际上是32位.那是问题吗?

我该如何解决这个问题?

有没有其他人让spatiaLite在x64上工作?

c# database sqlite gis spatialite

10
推荐指数
1
解决办法
5128
查看次数

在OS X上安装python(GeoDjango)的Spatialite

我正在试图为GeoDjango安装Spatialite!

我已经在使用Homebrew了,它通常很简单方便,所以我最初尝试按照Homebrew的说明操作 GeoDjango.

但这不会安装任何数据库,即Spatialite.下一步是尝试安装Spatialite本身,但Django docs没有提供特定于Homebrew的指令.

我发现这个教程看起来很完美 - 一个Homebrew和virtualenv友好的Spatialite for GeoDjango安装.

但它不起作用......似乎我pysqlite与OS X附带的非空间启用的SQLite版本相关联,而不是我从Homebrew安装的Spatial-ised版本,我在Django尝试时遇到此错误连接到db:

"pysqlite库不支持C扩展加载.必须配置SQLite和pysqlite以允许加载扩展以使用SpatiaLite."

pysqlite的作者没有回应我在Github上寻求帮助的请求,我没有通过谷歌找到任何东西.

所以我回到绘图板并决定遵循GeoDjango文档中的"Mac OS X特定指令" ......通过安装KyngChaos二进制包中的各种地理库.

该文件说"在他们上面列出的顺序安装软件包",但我发现我不能安装UnixImageIO,而无需安装PROJ第一.下载Spatialite二进制文件(http://www.gaia-gis.it/spatialite-2.3.1/binaries.html)的文档中的链接已中断,因此我使用了来自KyngChaos的"Spatialite Tools v4.1".

继续下一步,我收到此错误:

$ spatialite geodjango.db "SELECT InitSpatialMetaData();"  
SQLite header and source version mismatch  
2013-10-17 12:57:35 c78be6d786c19073b3a6730dfe3fb1be54f5657a  
2013-09-03 17:11:13 7dd4968f235d6e1ca9547cda9cf3bd570e1609ef
Run Code Online (Sandbox Code Playgroud)

在这一点上不确定是什么问题.

SO上有其他人已经走过了KyngChaos路线并且最终得到了相同的"两个SQLite和pysqlite必须配置为允许加载扩展"错误我从Homebrew路线得到了无论如何.

我发现这张票#17756用于添加pyspatialite对Django的支持 - pyspatialite应该是一种更简单的方式来处理pip install所有事情但不幸的是它也不起作用(请参阅对票底的评论).

我有点不愿意开始尝试从源头开始构建所有内容,因为我似乎可能会再次遇到同样的问题,但花费数小时谷歌搜索有关神秘的编译器错误,魔术标志和路径等的信息.

我准备放弃,只使用Postgres/PostGIS.

sqlite django pysqlite geodjango spatialite

9
推荐指数
1
解决办法
3385
查看次数

SQLite + SpatiaLite问题

我正在尝试使用System.Data.SQLite提供程序从C#访问SpatiaLite.当我尝试加载SpatiaLite扩展时,我总是得到

System.Data.SQLite.SQLiteException: SQLite error
The specified module could not be found.
Run Code Online (Sandbox Code Playgroud)

即使已将spatialite的dll复制到bin目录,也会出现错误.我甚至尝试指定dll的绝对路径,但无济于事.

这是代码:

string connectionString = @"Data Source=D:\MyStuff\projects\OsmUtils\trunk\Data\Samples\DB\osm.sqlite";
using (SQLiteConnection connection = new SQLiteConnection (connectionString))
{
    connection.Open();

    using (SQLiteCommand command = connection.CreateCommand())
    {
        command.CommandText = @"SELECT load_extension('libspatialite-1.dll');";
        command.ExecuteScalar();
    }
    ...
Run Code Online (Sandbox Code Playgroud)

这个链接我得到的印象应该工作.

提前致谢

c# sqlite gis spatialite

8
推荐指数
1
解决办法
5913
查看次数

有没有办法告诉 Room 关于自定义 sqlite 函数?

我已经实现SupportSQLiteOpenHelper.Factory了打开一个空间数据库(带有空间函数的 sqlite)。但是,当我的查询使用诸如 之类的空间函数时ST_AREA,Room 会抱怨不存在这样的函数。有没有办法告诉房间这些自定义功能或将其配置为跳过功能检查?

android spatialite android-room

8
推荐指数
1
解决办法
327
查看次数

在SQLite + BEGIN TRANSACTION中更快地更新

这个也与spatilite有关(不仅仅是SQLite)

我有一个文件数据库(xyz.db)我正在使用SQLiteconnection(SQLiteconnection扩展到spatialite).

我有这么多记录需要更新到数据库中.

                for (int y = 0; y < castarraylist.Count; y++)
                {
                    string s = Convert.ToString(castarraylist[y]);

                    string[] h = s.Split(':');

                    SQLiteCommand sqlqctSQL4 = new SQLiteCommand("UPDATE temp2 SET GEOM = " + h[0] + "WHERE " + dtsqlquery2.Columns[0] + "=" + h[1] + "", con);
                    sqlqctSQL4.ExecuteNonQuery();

                    x = x + 1;
                }
Run Code Online (Sandbox Code Playgroud)

在上面的逻辑castarraylistArraylist其中包含的值需要加工成数据库.

当我检查上面的代码时,在1分钟内更新大约400条记录.

有什么方法可以提高性能吗?

NOTE ::(文件数据库不是线程安全的)

2.开始交易

假设我想在Spatialite中使用单个事务运行两个(或数百万个)更新语句..是否可能?

我在线阅读并为我准备以下声明(但没有获得成功)

BEGIN TRANSACTION;
UPDATE builtuparea_luxbel SET ADMIN_LEVEL = 6 …
Run Code Online (Sandbox Code Playgroud)

c# sql sqlite spatialite

7
推荐指数
2
解决办法
2万
查看次数