Questions tagged «postgis»

PostGIS是PostgreSQL对象关系数据库的扩展,增加了对地理对象的支持。

2
地理编码质量:Nominatim与PostGIS Geocoder与Geocoder :: US 2.0
我偶尔需要对>> 500,000个美国街道地址进行地址解析(无要素或交叉路口)。我想在本地设置一个地理编码服务来处理这些批量地理编码。 过去,我在本地使用过基于Tiger的Geocoder :: US 2.0。初始基准测试可以针对Google地理编码的地址提供合理的准确性,尤其是当我不依赖Ruby解析器并且将地址元素明确传递给Geocoder时。 我还阅读了有关PostGIS Geocoder的大量文章。由于我的数据已经在PostGIS中,因此听起来很吸引人,但是我还没有在本地设置它来进行尝试。 另外,有人建议我在本地尝试Nominatim。除了它不是基于Tiger(据我所知)以外,我对此了解不多,我想知道是否会得到更可靠的结果。 我想向有上述解决方案经验的任何人问:三种方法的准确性如何比较?具体来说,哪个为美国街道地址提供了最一致可靠的地理编码?我不是太在意速度或设置复杂性。


1
如何在PostGIS中每n米将折线转换为点?
问题与此基本相同,但是我需要使用PostGIS。 我有许多条折线,并希望沿这些线每n米将其变换为点。 编辑:非常 感谢斯特凡。我的最终查询有些不同,可能是由于PostGIS(1.5)的版本较旧,但最终我得到了所需的东西。将点合并成道路密度的热图。
14 postgis  point  line 

1
PostGIS中用于邻近搜索的ST_DWithin和ST_Distance有什么区别?
我有存储在表中的记录,而纬度/经度坐标存储在几何字段中。我想查找用户提供的参考点附近的所有记录。注意“附近”可能意味着小于100公里(可能更小)。 我看到的大多数示例都可以使用ST_DWithin。您有不能使用的理由ST_Distance吗?使用ST_DWithin和ST_Distance这样做有什么区别? 例如: SELECT name, ST_AsText(coords) FROM places WHERE ST_DWithin(coords, ST_GeomFromText('POINT(-12.5842 24.4944)',4326), 1) 与 SELECT name, ST_AsText(coords) FROM places WHERE ST_Distance(coords, ST_GeomFromText('POINT(-12.5842 24.4944)',4326)) < 1

2
如何在PostGIS中获得两个几何之间的测距仪值?
我有一个关于在PostGIS中计算距离的简单问题。 我想得到两个几何之间的距离。我正在使用此sid:4269以米为单位我现在正在做的是:ST_Distance((a.geom,b.geom)) FROM ...但是我得到的结果是以度为单位。我认为我应该处理地理问题,但是如何将地理模型转换为地理?我尝试了(a.geom :: geography),但出现错误。 我该怎么做才能以米为单位得出结果? 谢谢

4
导入.shp到PostgreSQL吗?
我想将一个shp文件导入postgreSQL。首先,我创建sql文件,然后运行PostgreSQL。要创建sql文件,我在Windows cmd中运行以下命令: shp2pgsql -s 4326 worldCountries.shp worldcountries postgres > worldcountries.sql 然后运行: psql -d postgres -U postgres -p 4321 -f worldcountries.sql 但结果是: psql:worldcountries.sql:21:错误:函数addGeometrycolumn(未知,未知,未知,未知,未知,整数)不存在

1
PostGIS:计算表中线和面的顶点数
我在PostGIS模式中有23个表,我需要计算其顶点数。这些表是线和面的混合体,因此意识到我需要使用ST_NPoints(geom) 所以我跑了以下查询 SELECT count(ST_NPoints(geom) FROM lines; 结果/计数等于该表中要素的数量,而不是该表中所有要素的顶点总数。 我一定想念一些东西,但无法弄清楚(必须是星期一早上;)
14 postgis 

4
使用QGIS或PostgreSQL或任何其他免费应用程序实现空间自相关?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 4个月前关闭。 我是GIS的新手。 我在PostgreSQL数据库中有两层。 第一层包含欧洲发生事件的地点。第二个包含欧洲的shapefile。 我已经能够使用QGIS在欧洲地图上绘制点。我现在想实现空间自动校正(Moran i)。 我已经看到了一些使用GeoDA进行此操作的演示,但似乎只处理一个shapefile。 谁能为我指出如何使用QGIS或PostgreSQL或任何其他免费应用程序实现此目标的正确方向?

3
创建最大宽度/高度比的“斜边界框”?
我想从一组输入要素中创建一个最大宽度/高度比(“斜边界框”)的周围矩形,如下图所示: 例如PostGIS功能ST_Envelope和ST_Box2DFME变压器,BoundingBoxReplacer并BoundingBoxAccumulator生成轴平行边界框。 任何使用PostGIS,QGIS或FME的方法的建议都将受到欢迎!
13 qgis  postgis  fme  extents 

3
增加图块缓存速度(TileStache)
我正在使用TileStache提供矢量图块,我已经按照需要设置了所有内容。我的数据存储在Postgres中,并且我正在使用VecTiles提供程序来提供GeoJSON切片。 我想缓存所有图块,以使图块的投放速度更快。我正在使用tiletache-seed.py播种我的缓存。我正在多台机器上运行tiletache种子。Tilestache-seed的13级缩放效果非常好,但是在那之后花费太长时间来缓存图块。仅对于16级缩放,我要缓存5023772个图块,而每台机器每天只能得到10万至20万个图块。 如何使我的图块缓存更快?有没有一种方法可以微调tilestache-seed.py并使它更快地播种? 更新:我曾尝试在表上(在几何列和用于通过where子句过滤数据的列上)建立空间索引,但我仍然没有看到平铺速度的显着提高。以这种速度,只有Zoom 17会占用我一个月的时间,而随着我朝Zoom 21的方向移动,这一次只会成倍增加 更新2:我也尝试制作实例化视图,并且性能没有明显变化,因此优化数据库无法正常工作。我想我将需要优化tiletache-seed.py本身,或者设计一种新的方式来缓存图块。 硬件信息我正在8台不同的PC上运行缓存过程,其中一台是具有32GB内存的i7,另一台是具有4GB内存的i3,但是它们都为我提供了几乎相同的缓存速度(每天大约100k磁贴)

1
访问存储Postgis空间索引的内部数据结构(PostGres GiST)
我很好奇Postgis中空间GiST索引的内部数据结构和存储机制。在Oracle中,我曾经喜欢展示SDO索引是如何“仅仅是另一张表”,以及级别是索引的属性,以及索引几何的bbox如何存储为blob(可以提取)。Postgis如何存储索引,在哪里? 系统表http://www.postgresql.org/docs/8.3/static/catalogs.html可用于标识索引,但是我不知道如何访问实际存储(如果它们确实是表)

1
从PostGIS中的线创建面
我正在尝试将一条线中的一个多边形划分为多个较小的多边形,但是我想我不能使用st_split函数。我需要的是使用线串网格在大的多边形内创建小多边形。 我尝试了一些方法,但无法获得结果。我尝试过的 使用st_split()从LineString中分割一个多边形 从边界多边形开始。 和线串表: 我需要以下多边形: 问题:我无法从多条线分割多边形,也无法从多线串分割多边形。 我正在尝试的另一种方法是使用st_polygonize()从线创建多边形,而我正在尝试的SQL是: SELECT g.path[1] as gid, g.geom::geometry(polygon, 22033) as geom FROM (SELECT (ST_Dump(ST_Polygonize(geom))).* FROM linestable ) as g; 从使用PostgreSQL和PostGIS从线段创建多边形中提取 问题:我只能得到一个多边形(边界)。 有人可以告诉我从线串中获取多边形的最佳方法是什么,或者我是否缺少某些东西? 注意:表位于相同的SRID中,并且几何形状已捕捉到网格中。在QGIS中,我可以完美地执行从线条到多边形的多边形化过程。 根据John的要求,这是线串表。 https://drive.google.com/file/d/0B603y_m735jfS014S0EyVnpMUEU/view?usp=sharing
13 postgis  sql  topology 

1
PostGIS-如何在单个表中有效ST_Union所有重叠的多边形
我的目标是将一张桌子和st_union彼此接触或靠近的所有多边形st_union合并为一个多边形 我是一位C#开发人员,他开始学习PostGIS。使用下面的代码,我能够做到这一点,但是效率似乎很低,而PostGIS对我来说是很多新东西。 从我最初的尝试(仍在注释中),我能够通过将array_agg与ST_UNION一起使用来减少迭代,而不是一次仅合并poly。 我得到了来自orig 173的133 polys。 sql = "DROP TABLE IF Exists tmpTable; create table tmpTable ( ID varchar(50), Geom geometry(Geometry,4326), Touchin varchar(50) ); create index idx_tmp on tmpTable using GIST(Geom); "; CommandText = sql; ExecuteNonQuery(); sql = ""; for (int i = 0; i < infos.Count(); i++) { sql …
13 postgis 

2
POSTGIS获取多边形的最大长度和平均宽度
我在postgis中有一个多边形类型表。 我需要自动计算多边形的最大长度: 第二个是平均宽度: 我现在怀疑是否可行,因为尽管在其他情况下我所有的多边形将几乎都是矩形的,但它确实可能是模棱两可的,并且几乎不可能区分宽度和高度。 让我们看看是否有人可以对此进行阐述。 问候,

1
Hstore键/值和空间查询的组合太慢,无法处理更大的OSM提取
我正在尝试使用PostgreSQL 9.3.5和PostGIS 2.1.4计算OSM数据的一些统计信息。我从从Geofabrik下载的巴伐利亚提取物开始。db模式是正常的API 0.6模式,数据是通过转储方法导入到Postgres中的(使用渗透性附带的pgsnapshot_schema_0.6 * .sql脚本)。还进行了真空分析。 我使用的唯一定制产品是一个多边形表,该表包含用于所有管理边界关系的多面体。多边形的几何形状没有任何简化。 我现在想要实现的是计算巴伐利亚的admin = 6边界内的所有节点。这是我的SQL查询: SELECT relpoly.id, count(node) FROM bavaria.relpolygons relpoly, bavaria.nodes node WHERE relpoly.tags @> '"boundary"=>"administrative","admin_level"=>"6"'::hstore AND ST_Intersects(relpoly.geom, node.geom) GROUP BY relpoly.id; 该查询的运行时非常糟糕,因为Postgres正在执行嵌套循环联接,并在所有节点上扫描每个admin = 6边界。仅供参考,巴伐利亚被分成98个admin = 6个多边形,巴伐利亚提取物中大约有3000万个节点。 是否有可能避免这种次优查询的执行,并告诉Postgres它只扫描一次所有节点(例如,通过增加结果集中对应多边形的计数器或使用提示)? 编辑: 1)巴伐利亚节点上存在空间索引: CREATE INDEX idx_nodes_geom ON bavaria.nodes USING gist (geom); 2)查询计划如下: HashAggregate (cost=284908.49..284908.75 rows=26 width=103) -> …

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.