Questions tagged «postgis-2.0»

PostGIS的2.0版为PostgreSQL对象关系数据库带来了大量新扩展,增加了对空间对象的支持。

1
PostGIS数据库的命名约定?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 2年前关闭。 我们开始使用PostGIS建立数据库。该数据库应该由大约5-8个研究小组组成,这些研究小组经常处理地理数据和统计数据。 设置数据库时,有人对命名约定有经验吗? 我已经知道的一些重要事项是: 仅使用小写 use_underscores不是空格 不要使用ä,é等特殊字符 仅使用一种语言(可能看起来很琐碎,但我们是国际性的) 名称表和列总是单数 寻找一种标准化的方法来命名数据库中的对象,即topic_year_source_format 特别是最后一点很棘手。存储我自己的数据,我意识到有时您会得到很多名字。因此,将这些信息存储在易于访问的元数据中而不是使这些庞大的名称变得非常烦人会更好。

3
使用ST_Difference删除重叠的功能?
我正在尝试使用PostGis 2.1(和Postgres SQL 9.3)使用ST_Difference创建一组多边形(processing.trimmedparcelsnew),这些多边形不包含另一组多边形(test.single_geometry_1)所覆盖的任何区域。这是我的查询: CREATE TABLE processing.trimmedparcelsnew AS SELECT orig.id, ST_Difference(orig.geom, cont.geom) AS difference FROM test.single_geometry_1 cont, test.multi_geometry_1 orig; 但是生成的多边形尚未修剪,相反,它们似乎在与另一层相交的地方被拆分了。我试过只运行选择而不将结果放在表中以及其他我能想到的东西,但是我似乎无法使该功能正常工作。 我已附上结果图 评论后,我尝试添加WHERE子句。我希望没有交集的宗地,而其他宗地的相交区域被删除(图层test.single_geometry表示要从宗地中删除的污染)。我尝试了一个相交,但是我当然想要非相交,所以我现在尝试分离。我也尝试过将折纸添加到表中,但是ST_Difference的文档(http://postgis.net/docs/ST_Difference.html)确实说它返回了我需要的精确几何图形(表示几何图形A的那部分,不会与几何B)相交,所以我对为什么要在表格中使用原始多边形感到困惑。无论如何,这是我修改后的代码: CREATE TABLE processing.trimmedparcelsnew AS SELECT orig.id, ST_Difference(orig.geom, cont.geom) AS difference, orig.geom AS geom FROM test.single_geometry_1 cont, test.multi_geometry_1 orig WHERE ST_Disjoint(orig.geom, cont.geom); 根据dbaston的回答,我现在尝试: CREATE TABLE processing.parcels_trimmed AS SELECT id, …

1
在可及区域上建立多边形
我目前在等时线和基础算法领域中工作。现在引起问题的不是等位线本身的计算,而是结果的可视化。 我的等时线算法的结果是点和边。实际上,我确实有一个可行的解决方案,但是对于3873个边缘和1529个节点而言,事情似乎要花很多时间(在装有2015 Core i7 CPU和相当快的SSD的Lenovo T440s笔记本电脑上大约需要2.0秒)。而不是几秒钟,我想要的更像是msec :-)。 也许有人可以帮助我减少构建可视化可到达区域的多边形所需的计算时间。 但是等一下……第一件事! 这是等边线的计算结果, 这些边线是我的可视化效果: 这些边线存储在PostGIS数据库表中,是简单的线串。 我要向用户显示的内容如下所示: 请注意图片最南端和最东端的断开区域。这些应绘制为单独的区域(因此此处不允许合并:-) 目前,我正在使用此查询: SELECT ST_AsGeoJson(St_Transform(ST_Multi(ST_Collect(polygons)), 4326)) AS coverage FROM ( SELECT ST_MakePolygon(ST_ExteriorRing(ST_GeometryN(segments, generate_series(1, ST_NumGeometries(segments))))) AS polygons FROM ( SELECT ST_Union(ST_Buffer("GEOMETRY", 20, 'quad_segs=2')) AS segments FROM my_edges AS a ) AS b ) AS c 我已经做了一些实验,并且阅读了很多文档,但是我找不到更好的解决方案。 在我眼中,最大的问题是ST_Union的用法(如docs中所述,此功能可能很慢)。有趣的是,用ST_Collect替换它似乎会减慢ST_Buffer的计算,因此以下所有查询甚至花费更长的时间,尽管它不会填充边缘之间的区域(它只会在线条周围创建缓冲区): SELECT ST_AsGeoJson(St_Transform(ST_Multi(ST_Collect(polygons)), …

1
Postgis 2.0-public.geometry_columns视图不包含视图的正确信息
我们最近将数据库更新为Postgis 2.0。 在我们的系统中,我们曾经为包含几何列的表创建视图。创建视图后,我们还使用必要的信息手动更新了geometry_columns表。这些视图用于创建Geoserver图层,也用于为ogr2ogr馈送数据。 Postgis 2.0中的问题在于,geometry_columns表已替换为从系统目录检索数据的视图。在我们的情况下,对于创建的视图,我们不会在“ coord_dimension”,“ srid”和“ type”列中检索正确的信息。 信息:经过一些研究,我发现geometry_columns视图正在使用pg_constraint表填充这些列,但是对于该视图没有定义约束。 有谁知道我们如何解决这个问题?我们如何强制gemetry_columns视图检索必要的信息?是否有解决方法或其他方法?

5
如何在交叉路口将OS​​M道路分割为单个路段?
我想使用OpenStreetMap数据创建一个用于pgRouting的道路网络。我从GeoFabrik将shapefile加载到Postgres表中(启用了PostGIS)。但是,我遇到的一个问题是道路并不总是在十字路口处终止,因此我决定在每个十字路口或十字路口将其全部拆分。 要找出所有地方的道路交叉或相交我用下面的interesections SQL(类似于以前的问题): CREATE TABLE split_points as SELECT DISTINCT ST_GeometryN(ST_Intersection(a.geom, b.geom),1) as geom FROM roads as a, roads as b WHERE ST_Touches(a.geom, b.geom) OR ST_Crosses(a.geom, b.geom) AND a.gid != b.gid GROUP BY ST_Intersection(a.geom, b.geom); 我现在想利用这些点来分路。我使用以下方法: CREATE TABLE split_roads as SELECT ST_GeomFromEWKB((ST_Dump(ST_Split(g.geom, blade.geom))).geom) As geom, generate_series(1,ST_NumGeometries((ST_Split(g.geom, blade.geom)))) as gid FROM split_points …


1
PostGIS:如何合并共享相同属性值的连续要素?
我有一个很大的PostGIS表,用于存储线要素。 我想合并彼此连接并具有相同属性值的要素。以下是我想要实现的示例。 不会合并最外面的要素(黑色和蓝色的要素),因为即使它们的属性值相同也不会连续 绿色和红色要素已合并,因为它们同时符合两个条件 仍然保留黄色功能。 您将如何通过SQL查询实现这一目标?

1
哪些PostGIS [拓扑]提供的工具可用于数据质量保证?
我正在学习确保GIS数据质量的技术。到处搜寻,我发现了一些关于理论和最佳实践的论文(在这里和这里),以及一些使用ESRI工具就该主题进行的简短介绍(在这里和这里) 例如,“容差”和“精度”的概念是在ArcGIS中全局定义的(我不知道),我认为Oracle也在全球范围内管理“容差”的概念。另一方面,据我所知,PostGIS没有公开GEOS支持的用户定义的精度模型,而只是使用浮点数的全部精度。 因此,我的问题是:哪些PostGIS [拓扑]提供的工具可用于数据质量保证?有没有人对此主题有经验?也许我只是为此选择了错误的工具。

3
为什么任何pgr_ *路由功能都会基于启用了pgrouting的DB中的OSM数据永久使用
我使用osm2po 4.7.7将德国OSM数据集加载到了可填充的数据库中。一切正常,我通过它的config设置了osm2po,并且它的Java部分像魅力一样工作。 我导入了* _2po_4pgr表,没有任何问题。甚至* 2po_v表也被导入,尽管我并不完全了解该表的关系。 我执行了pgr_createTopology函数,该函数运行了一段时间(12000秒),同时计算了所有6m边。我以为这可以达成协议,但速度仍然令人难以忍受。 我想知道我是否忘记了什么。我当时正在考虑使用pgRouting而不是java库,但是目前它的性能方面还处于比较之中。

3
将线的起点和终点与PostGIS中的其他线对齐
有很多示例显示了如何将线捕捉到点,但是我找不到任何(快速!)将线串的起点和终点节点捕捉到其他线节点的方法。 本质上,我想在postgis(2.0)中“清理”我的图层,将几乎相似的点移动到一起,并在线串之间缝制微小的开口。 是否添加另一个节点,移动任一条线的第一个/最后一个节点或将两个点都移动到中心都没关系。 我找到了两个选项,但是我不确定如何从两个选项开始: 使用拓扑:http://lists.osgeo.org/pipermail/postgis-users/2012-May/034024.html 爆炸线,捕捉节点,合并节点。http://www.mail-archive.com/postgis-users@lists.osgeo.org/msg00174.html 第二个选项听起来可行,但是对于如何遵循此方法的任何帮助将不胜感激。


2
在Postgis 2.0中的视图中强制使用SRID
我有一个非常棘手的问题:我有一个Postgis 2.0数据库,用作Geoserver 2.1.3的数据存储 我有一个带有几何列(名为形状)的表,其SRID 4326 我创建了这样的视图: CREATE VIEW pippo AS SELECT st_geometryn(shape,1) as geom FROM events 然后,我使用geoserver发布了视图。除GetFeatureInfo请求外,其他所有操作均有效,并显示错误“对混合SRID几何进行操作”。 select * from geometry_columns 返回pippo.geom的SRID为0(但应为4326) 我也尝试使用此定义进行查看 CREATE VIEW pippo AS SELECT st_setsrid(st_geometryn(shape,1), 4326) as geom FROM events 但是我在geometry_columns中仍然有SRID = 0。...有什么帮助吗? 这是在Geoserver中定义图层的方式: 解决方法 我找到了一种解决方法,不仅可以解决问题本身,还可以让Geoserver对GetFeatureInfo请求执行空间搜索: 我没有创建视图并发布它,而是发布了直接在geoserver中定义的SQL层。在层定义表单中,它使我可以选择正确的宝石学类型和SRID,并且现在一切正常!
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.