标签: spatial

用于搜索引擎和 gis 的哪个图形数据库?

我刚刚了解到那里有“图形数据库”,它们更适合两个应用程序“搜索引擎”,尤其是“gis”。

为了避免讨论关系数据库是否更适合并明确需要什么样的数据库,这里有一些我想使用它的详细信息:

  1. 应用程序(搜索引擎):在关系数据库中处理搜索引擎数据很慢,因为您将拥有包含大量索引的大表。想象一下像'links'这样的表,它只有from_pageid INT, to_pageid INTPRIMARY KEY(from_pageid,to_pageid),INDEX(from_pageid)和INDEX(to_pageid);这将有大约 1'000'000 个条目。当使用图形数据库时,每个节点只有所有“从”和“到”链接,有或没有索引,它们就在那里,而无需查找巨大的索引。
  2. 应用程序 (GIS):如果您有一张地图,其中包含节点(具有地理位置)和它们之间的链接(=道路、道路、自动路线...),您将有一个很大的“链接”表来询问哪些链接(road,ways,...) 可用于节点 x。与搜索引擎应用程序相同的问题。

好的,现在还有一些专业:

  1. 它应该是一个免费软件(免费)。原因:我想将它用于研究/教育目的(我目前必须自己为此提供资金)。AND:我可能想让它成为一种商业产品。因此,如果切换到商业应用程序,“非商业用途免费”解决方案至少应该是负担得起的……
  2. 我想使用 PHP、C/C++ 来访问数据库(最好两者都可以)。如果还支持 Java/Android,那就更好了。
  3. 操作系统:Linux!我想避免使用基于 Java 的产品,因为 javaVM 往往会吃掉所有 RAM(只有非常有限的服务器资源)并且不释放任何内存 - 即使它们可以。

你会向我推荐什么数据库?

database-recommendation linux php graph spatial

3
推荐指数
1
解决办法
1119
查看次数

可以使用 SQL Server 2008 中的视图返回地理数据类型 Lat/Long 属性吗?

希望这个问题是不言自明的。

我一直在寻找关于 sql server 2008 中的视图和地理数据类型的微软文档似乎很少/很差,我认为答案是“不,地理数据类型要么不受支持,要么在看法”; 但我不完全确定,我希望得到一些佐证。

我一直在尝试将地理数据添加到现有视图中。我的最终目标是从相关领域检索经度/纬度数据。

这是应用于表时有效但在视图中定义时无效的选择语句(简化):

SELECT     
    [dbo.vendor.location].Lat AS latitude,
FROM         
    dbo.vendor
Run Code Online (Sandbox Code Playgroud)

请注意,这[dbo.vendor.location]是字段,并且Latgeography数据类型的纬度属性。

当该 sql 在视图中运行时,将返回以下错误:

The multi-part identifier "dbo.vendor.location.Lat" could not be bound
Run Code Online (Sandbox Code Playgroud)

编辑:

请注意,我还尝试了以下查询,结果相似:

SELECT     
    [dbo].[vendor].[location].Lat AS latitude,
FROM         
    dbo.vendor
Run Code Online (Sandbox Code Playgroud)

在这种情况下,SQL Management Studio 删除引号并返回相同的“多部分...无法绑定”错误。

sql-server-2008 sql-server sql-server-2008-r2 c# spatial

3
推荐指数
1
解决办法
1462
查看次数

无法从发送到 GEOMETRY 字段的数据中获取几何对象

以下简单测试返回错误

CREATE TABLE track (
  position point NOT NULL
);
INSERT INTO track VALUES (
  position=ST_PointFromText('POINT(-45.62390335574153 -3.9551761173743847)')
);
Run Code Online (Sandbox Code Playgroud)

错误:

错误 1416 (22003):无法从发送到 GEOMETRY 字段的数据中获取几何对象

我究竟做错了什么?

mysql spatial errors

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

Spatial_ref_sys 中存储了什么?

迁移到其他服务器时是否应该复制此表中的数据?

postgresql spatial postgis

3
推荐指数
1
解决办法
3693
查看次数

&& vs ST_Intersects 性能

我试图找出位于矩形区域(信封)内的点。我在使用了一点点难度的理解性能影响&&运营商相比ST_Intersect

但是,我想我在尝试提出我的问题时解释了我自己的问题。我无论如何都会提交它,以防它对某人有用。

&&的手册说(具有讽刺意味的是,页面名称是 geometry_overlaps.html):

&& — 如果 A 的 2D 边界框与 B 的 2D 边界框相交,则返回 TRUE。`

ST_Intersects的手册说:

如果几何/地理“在二维空间上相交”-(共享空间的任何部分),则返回 TRUE,如果不相交(它们不相交),则返回 FALSE。对于地理 - 容差为 0.00001 米(因此任何靠近的点都被视为相交)

ST_Intersects在这种情况下将返回 true。因为我&&在任何一种情况下都使用矩形边界框,所以我的目标运算符几乎做同样的事情。我想知道是否&&是我的目的最快的运营商?感觉&&必须做更少的检查,所以它必须更有效率。

这是一个直接复制自&&,ST_Intersects改编的示例:

SELECT
        t1.id AS t1,
        t2.id AS t2,
        t1.ln && t2.ln AS "&&",
        ST_Intersects(t1.ln,t2.ln)
FROM ( VALUES
        (1, 'LINESTRING(0 0, 3 3)'::geometry),
        (2, 'LINESTRING(0 1, 0 5)'::geometry)
) AS t1(id,ln)
CROSS JOIN (VALUES
        (3, 'LINESTRING(1 2, 4 …
Run Code Online (Sandbox Code Playgroud)

postgresql spatial postgis

3
推荐指数
1
解决办法
2270
查看次数

对于 Postgres,有效地获得点 Y 的 X 距离内的点?

我在 Postgres 中有这个表,如下所示:

create table locations
(
    id serial not null
        constraint games_pkey
            primary key,
    name varchar,
    location point,
)
;
Run Code Online (Sandbox Code Playgroud)

我想根据另一个位置point( x, y )作为纬度和经度进行查询;我只需要返回距离该位置 1 公里以内的记录。如何有效地选择符合该标准的记录?

我只需要在局部范围内精确的距离,因此地球曲率对我的应用程序来说不应该是一个问题,但是在这种情况下,POINT 或 GIS 是否有性能优势?

我在 stackoverflow 上发现了这个问题,它似乎做了类似的事情,但接受的答案只有代码,也没有说明它是如何工作的:https : //stackoverflow.com/questions/37827468/find-the-nearest-location-by -latitude-and-longitude-in-postgresql

postgresql spatial postgis

3
推荐指数
1
解决办法
456
查看次数

PostgreSQL 地理空间查询很慢

在放弃 MySQL 之后,我尝试了 Elasticsearch,现在不想看看我是否可以使用 PostgreSQL/PostGIS,因为它可以让我只使用 PostgreSQL。

我需要按距离(不能完全相同)从表中获取记录并按距离排序。该表有 1000 万条记录。

当我在 PostgreSQL 上查询比在 MySQL 上的查询速度慢时,我想我一定做错了什么。

我可以做什么更好?

桌子:

id | hash_id | town | geo_pt2 

geo_pt2 is geography
Run Code Online (Sandbox Code Playgroud)

指数:

CREATE INDEX geo_pt2_gix ON public.member_profile USING gist (geo_pt2)
Run Code Online (Sandbox Code Playgroud)

询问:

SELECT hash_id, town
     , ST_Distance(t.x, geo_pt2) AS dist
FROM   member_profile, (SELECT ST_GeographyFromText('POINT(47.4667 8.3167)')) AS t(x)
WHERE  ST_DWithin(t.x, geo_pt2, 250000)
ORDER  BY dist
limit 100 offset 1000;
Run Code Online (Sandbox Code Playgroud)

解释:

Limit  (cost=9.08..9.08 rows=1 width=53)
  ->  Sort  (cost=9.07..9.08 rows=1 width=53)
        Sort Key: (_st_distance('0101000020E610000088855AD3BCBB474052499D8026A22040'::geography, member_profile.geo_pt2, '0'::double precision, true))
        -> …
Run Code Online (Sandbox Code Playgroud)

postgresql performance spatial postgis postgresql-10 postgresql-performance

3
推荐指数
1
解决办法
503
查看次数

空间索引压缩

我希望在空间索引上打开页面压缩。实例为2008 Enterprise。该索引预先存在于供应商提供的应用程序中。在搜索 BOL 时,它指出压缩和填充因子都是允许的。

ALTER INDEX [ix_city_citypoint] on city 
REBUILD WITH (FILLFACTOR = 90, DATA_COMPRESSION = PAGE) 
Run Code Online (Sandbox Code Playgroud)

消息 153,级别 15,状态 4,第 12 行
ALTER INDEX REBUILD 语句中选项 data_compression 的使用无效。

原创:

CREATE SPATIAL INDEX [ix_city_citypoint] ON [dbo].[city]
(
    [citypoint]
)USING  GEOGRAPHY_GRID 
WITH (GRIDS =(LEVEL_1 = MEDIUM,LEVEL_2 = MEDIUM,LEVEL_3 = MEDIUM,LEVEL_4 = MEDIUM), 
CELLS_PER_OBJECT = 16, PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF
    , SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF
    , ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [primary]
GO …
Run Code Online (Sandbox Code Playgroud)

sql-server-2008 compression spatial

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

如何在 MySQL 中使用 SRID 创建一个点?

MySQL 支持使用ST_PointFromTextSRID 来构造一个点,

  • ST_PointFromText(wkt[, srid [, options]])

    使用其 WKT 表示和 SRID 构造 Point 值。

这假设输入是众所周知的文本 (WKT)。如何构造一个纬度和经度为双精度(或浮点类型)的点

mysql mariadb spatial mysql-8.0

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

错误:无效的 GeoJson 表示

GeoJSON 规范展示,

{
  "type": "Feature",
  "geometry": {
    "type": "Point",
    "coordinates": [125.6, 10.1]
  },
  "properties": {
    "name": "Dinagat Islands"
  }
}
Run Code Online (Sandbox Code Playgroud)

但是当我把它包装在一个调用中时ST_GeomFromGeoJSON,像这样,

SELECT ST_GeomFromGeoJSON($${                                                                                                                          
  "type": "Feature",                                                                                                                                   
  "geometry": {                                                                                                                                        
    "type": "Point",                                                                                                                                   
    "coordinates": [125.6, 10.1]                                                                                                                       
  },                                                                                                                                                   
  "properties": {                                                                                                                                      
    "name": "Dinagat Islands"                                                                                                                          
  }                                                                                                                                                    
}$$);
Run Code Online (Sandbox Code Playgroud)

我得到错误,

错误:无效的 GeoJson 表示

postgresql spatial postgis json geojson

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