Questions tagged «postgis»

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

2
如何不自己做数学就将地磁坐标转换为地理坐标?
我有一些地磁数据。也就是说,它们是经度和纬度,但是是指加拿大的磁性北极而不是地理北极。您可能会猜到,我想将它们与其他坐标系中的其他数据进行匹配。 (数据起源于极光椭圆的计算;即,它们起源于地磁,即使在原则上也没有可以参考的地理资源。) 数据将存储在PostGIS中。 这样做的简单方法是找到地磁坐标系的EPSG代码,用该代码标记数据,然后将所有内容神奇地重新投影到我当时需要的任何位置。但是,我在spatialreference.org上找不到包含地磁或磁场的任何EPSG代码。各种Google搜索也都没有结果。 对于我需要的精度水平,任何经修改以具有不同北极的纬度/经度坐标系(例如WGS84)就足够了。因此,如果有一种简单的方法来定义这样的坐标系并将其加载到PostGIS中,那也可以。 澄清度 例如,假设我只是想从UTM 15N转换为WGS84,而不是从地磁坐标转换为地理。我可以将UTM对象未经修改地保存到PostGIS中,并用EPSG代码26915对其进行标记。然后,当我稍后进行查询时,我可以对PostGIS说“请在EPSG代码4326中返回结果”,然后PostGIS将自动转换为WGS84。 同样,我想用一些坐标系标记地磁数据,并让PostGIS在幕后进行重新投影,而无需reproject()手动调用函数。

1
PostGIS可以将一列限制为多边形和多边形吗?
我目前正在使用PostGIS 1.5.3,但是很快我将升级到2.0。因此,请注意与以下问题相关的两个版本之间的任何差异。 是否可以创建一个PostGIS几何类型的列,该列允许插入多边形和多多边形,但限制其他几何类型的插入,而无需手动修改PostGIS在调用AddGeometryColumn时生成的约束? 有没有理由不这样做吗?特别是,PostGIS是否存储任何手动修改约束可能会产生负面影响的元数据?(我是PostGIS的新手,所以如果PostGIS存储元数据的想法很荒谬,请原谅我。) 对所有事物使用多面体会产生多大的开销? 我已经知道在插入之前使用ST_Multi将多边形转换为多多边形,因此,如果不可能或不是一个好主意,我会做的。
10 postgis 

7
我应该为网站地图应用程序使用CMS吗?
对于我的Web地图应用程序,我在客户端(以及其他JS库)中使用GeoServer作为服务器,使用PostGIS作为空间DB和OpenLayers。该地图由基础地图和矢量图层组成。这些向量层之一是“公共机构”层。对于机构的每种类别(部委,法庭...),都有人(我称他们为“撰稿人”)负责编辑有关这些机构的数据(电话,传真,地图上的位置...)。贡献者由管理员管理,管理员指定每个参与者的特权。管理员需要验证贡献者的某些修改(例如删除机构)... 因此,我认为使用CMS可能会有所帮助。你怎么看? 有一些像Drupal这样的CMS集成了OpenLayers,但似乎该项目仍在开发中,指向项目页面的链接。有其他选择或经验可以分享吗?

5
Solo开发人员的数据库与文件
我刚刚开始使用GIS,并且对使用它创建我所在地区及附近山区自行车道的地图感兴趣。我一直在学习QGIS,并且已经取得足够的进展来生成一张体面的地图。到目前为止,我已经将图层存储在Shapefiles中,似乎工作正常。 在过去的一个周末,我开始研究PostGIS并使其运行并设法导入我的路径shapefile并将QGIS连接到PostGIS。 我现在想知道使用数据库与文件的利弊是什么。我已经有一些想法,但是很好奇别人可能有什么启发性的看法。 数据库的优点 无论走到哪个公园,所有足迹的一张桌子都可以让我拥有一组一致的信息列。 更轻松地查询/导出我的数据为多种格式 多个客户端/工具使查看和编辑数据更加容易 简化表格结构的编辑(与QGIS表格编辑相比) 数据库的缺点 站起来/维护数据库会增加我的设置的复杂性。 我有一台台式机和一台笔记本电脑,我在做GIS,使用DropBox可以轻松在两台计算机之间同步文件。与使用DropBox和文件一起使用PostGIS,这可能是不可能的(或透明的)。 比数据库更容易备份/还原文件。

1
如何有效地找到日期线上的最近点?
我有一个带有成千上万个PostGIS POINT的PostgreSQL 9.1表。对于这些,我想在另一个POINT表中找到最接近的点。第二张表中的点代表整个世界上的网格,因此我知道总会有1度以内的匹配。这是我到目前为止使用的查询,它利用了GIST索引,因此相当快(总计约30秒)。 SELECT DISTINCT ON (p.id) p.id, ST_AsText(p.pos) , ST_AsText(first_value(g.location) OVER (PARTITION BY p.id ORDER BY ST_Distance(p.pos, g.location::geography))) FROM point p JOIN grid g ON ST_DWithin(p.pos::geometry, g.location, 1) 唯一的问题是时间表。网格点的纬度只有180,而不是-180。使用ST_Distance的几何版本时,这不会在日期线的另一侧返回点。例如。如果p.pos是POINT(-179.88056 -16.68833)最近的网格点,可能是POINT(180 -16.25),但是上面的查询没有返回它。解决此问题的最佳方法是什么? 我真的不希望单个网格点具有两个坐标(-180和+180)。我尝试添加自己的函数来检查这种特定情况,但随后查询在5分钟内未返回,可能是因为它无法再使用索引。我还尝试使用地理版本的ST_DWithin,并且该查询在5分钟后也没有返回。

2
将PostGIS表转换为Python中的Shapefile?
我想将PostGIS表转换为shapefile(不使用pgsql2shp)。 为了在shapefile中创建几何,我必须提供Xmin,Ymin和Xmax,Ymax,而我在PostGIS表中拥有的几何是不规则形状的(我可以使用边界框获得外部,但是其中包括比我最笨拙的区域多一些)。有什么方法可以完成任务? 我想以编程方式并使用Python进行操作。
10 python  postgis 

1
您可以在Google地图中的给定点查询用户定义的重叠多边形吗?
我需要找出使用Google Maps API的局限性以及进行半复杂空间比较的可能解决方案。 我要实现的是一个比较系统,该系统将允许查询给定点(居住地址)上重叠的用户定义的空间多边形。 基本上,餐厅将具有给定的交货区域,该区域的参数将由X地理坐标定义。地址由单点(x,y)表示。 有人告诉我,这类空间比较的最佳后端是postGIS。但是,在查看Google Maps API设置的条款和条件后,尚不清楚是否允许您存储Google提供的地理坐标响应。 http://code.google.com/apis/maps/terms.html 10.1.3-例如,您不得使用“内容”创建一个独立的“地点”数据库。...但是 ..除非您可以存储以下内容:(i)如果您临时,安全且以不允许在Google之外使用内容的方式来存储有限数量的内容,以改善Maps API实施的性能服务 我的问题是: 有没有人有使用空间多边形和Google Fusion Tables的经验? 有没有人有过使用Google Places API的经验,是否可以进行这些类型的比较? 因为显示Google地图时会捕获地理坐标,然后将其存储起来以与更完整的Google Map结合使用,所以这是否属于Google制定的“使用条款”内? 我非常热衷于使用Google Maps,鉴于我的应用程序成功,因此可以订阅高级服务。有没有其他人有过这类计算的经验,我缺少什么吗?

2
PostGIS中的环形自交点
这是先前问题的后续内容。您将看到我是PostGIS的新用户。 我查看了数据中拓扑的有效性,并在Landcover(多边形)数据集中发现了约1700个拓扑问题。这些都是“ Ring Self_intersection”。 使用Paul Ramsay在此演示文稿中的一些有用信息(第20页),我试图相应地缓冲数据: UPDATE schema.data SET the_geom = buffer(the_geom,0.0)在哪里有效(the_geom)= false和isvalid(buffer(the_geom,0.0))= true; 但是我得到了回应: 注意:在或接近点的环形自相交(已编辑)错误:关系“ sgm_buffer”的新行违反了检查约束“ enforce_geotype_the_geom” **********错误********** 错误:关系“ sgm_buffer”的新行违反了检查约束“ enforce_geotype_the_geom”的SQL状态:23514 我也尝试过: 更新csgn.sgm_buffer SET the_geom = buffer(the_geom,0.0) 并获得: 错误:关系“ sgm_buffer”的新行违反了检查约束“ enforce_geotype_the_geom” **********错误********** 错误:关系“ sgm_buffer”的新行违反了检查约束“ enforce_geotype_the_geom”的SQL状态:23514 那么,我是否认为该缓冲技术无法解决我的问题?还是我做错了什么? 拉姆齐先生随后在同一文档中继续提出了另一种处理“ 8位数字”多边形的技术。我不完全理解如何用代码完整地写出来(或者它在做什么以及是否对我有帮助): 选择ST_BuildArea(ST_Union('LINESTRING EMPTY',ST_ExteriorRing('POLYGON((...))' 所以....有人可以帮忙吗?由于时间紧迫,PostGIS技能有限,这真是一场噩梦。
10 postgis  topology 

1
如何使用Quantum GIS向PostGIS图层添加要素?
我正在使用Quantum GIS和PostGIS dbms。我可以将PostGIS层调用到QGIS中,但是无法向其中添加功能。我正在使用向Shapefile添加要素的方法,但仍未在图层中反映出来,如果能够将要素添加至PostGIS图层,我也不知道如何将其保存到PostGIS数据库中。 我可能没有用一些技术术语来解决这个问题,因为我不知道该怎么称呼,我是用自己的术语来表达问题的。
10 postgis  qgis 

1
通过GIST索引获得多边形查询中点的性能
我有两个表:locations(id,region_id,the_geom)和regions(id,the_geom)。对于每个定位点,我想确定其位于的区域: UPDATE locations SET region_id = (SELECT id FROM regions WHERE ST_Within(locations.the_geom,regions.the_geom) ); 在位置点上建立GIST索引是否有意义?我将在区域多边形上建立索引,但是不确定这些点。会加快查询速度吗?

1
有关PostGIS多边形几何的帮助-非闭合环
我已经摘录了Erik Westra(亚马逊链接)撰写的一本超级邪恶的书“ Python Geospatial Development” ,并且正在研究中。目前,它正在教我将GSHHS海岸线数据从shapefile加载到PostGIS数据库中,以准备构建地理空间Web应用程序。 我的问题是:当我尝试将GSHHS数据导入PostGIS时,由于海岸线多边形不被视为“有效”而被拒绝。具体来说,我收到一条错误消息,将某些(而非全部)海岸线多边形描述为“非封闭环”。 我知道此错误试图告诉我多边形的第一个点和最后一个点不相同。但是,这根本不是事实。我已经检查了许多多边形的WKT表示形式,它们是正确的。它们肯定以相同的坐标开始和结束。 使用OGR库从shapefile中提取多边形,并将每个多边形要素导出到WKT。我尝试通过Shapely重构多边形,并尝试使用WKB,但无济于事。我已经能够在同一数据加载到PostGIS的作为MULTIPOLYGON表,使用shp2pgsql装载机。 我想知道那里是否有人: (a)也许使用同一本书,陷入同样的​​问题,并且对我有答案? (b)遇到类似问题,并找到解决方案? (c)否,是否有一些“最佳实践”建议,以确保在装入PostGIS之前确保有效的几何图形? 更新:一位同事建议,“非闭合环”问题可能只是另一个问题的征兆。我的PostGIS / PostgreSQL配置可能有大小限制(关于插入事务,接收到的数据包,文本字符串等)。 由于我将很长的WKT多边形用作输入,因此PostGIS可能为时过早,无法允许每个多边形完成切割。我明天将对其进行测试,但听起来确实有可能。我插入的国家边界只是接受一些记录,而不接受其他记录。从内存来看,可接受的几何形状适用于像安提瓜这样的小岛国(因此可能具有较短的WKT表示形式)。 因此,这最终可能更多是PostGIS数据库管理线程,而不是无效的几何线程。
10 python  postgis  ogr  wkt 

3
从PostgreSQL中获取dxf文件
我已经成功地将一堆shapefile加载到PostGIS数据库中。我希望能够基于SQL查询以dxf文件的形式检索特定的几何图形和图层。 我正在使用Windows上OSGeo4W套件中的PostGIS,GDAL,PostgreSQL和Python。 我在想应该像这样使用ogr2​​ogr: $ ogr2ogr -sql "SELECT * FROM some_table" -f "dxf" outputfile.dxf -overwrite "PG:dbname=mydb user=dbusername password=dbpassword" 但是当我使用适当的值执行此操作时,会出现一系列如下错误: ERROR 1: DXF layer does not support arbitrary field creation, field 'objectid' not created. 导致该层中每个属性列都出错,some_table但是我确实得到了dxf文件。 如果已经创建了.dxf文件,并且重新运行了上面的命令(包括该-overwrite选项),则会收到此错误: Layer sql_statement not found, and CreateLayer not supported by driver. ERROR 1: Terminating translation prematurely after …
10 postgis  gdal  ogr  dxf 

2
如何将OSM数据转换为PostgreSQL以进行路由?
我正在使用OpenStreetMap创建路由应用程序。当前,我的任务是将数据从OSM文件转换为PostgreSQL。 我读到有关osm2pgsql的信息,但是问题是它说osm2pgsql不适合路由。我也阅读了有关Osmosis的文章,但是关于Rails port有所了解,我认为这意味着我需要学习Rails中的Ruby。我过去曾尝试学习RoR,但发现我很难学习。 我正在为我的应用程序使用PHP。如何从OSM文件中提取数据并将其导出到我的PostgreSQL。我知道我可能在这里遗漏了一些东西,但是在映射应用程序时我是一个新手。我希望有一个人可以帮助我。谢谢!:D

5
使用PostGIS识别“长而窄”的多边形
我有一组代表大面积的多边形,例如城市社区。我想确定它们之间的大重叠区域。 但是存在一个问题:有时这些多边形会沿其周界重叠(因为它们绘制的精度很低)。这将产生我不关心的长而窄的重叠。 但其他时候,健壮多边形会出现大量重叠,这意味着邻域的多边形会与另一个多边形重叠的较大区域。我只选择这些。 请参见下面的重叠图片。想象一下,我只想选择左下角的蓝色多边形。 我可以看一下区域,但是有时狭窄的区域是如此之长,以至于最终它们会具有与蓝色多边形一样大的区域。我试图做一个面积/周长的比率,但这也产生了混合的结果。 我什至尝试使用ST_MinimumClearance,但是有时大区域会附上一个狭窄的部分,或者两个非常接近的顶点。 对其他方法有什么想法吗? 最后,最适合我的方法是使用负缓冲区,如下面的@Cyril和@FGreg所建议。 我使用了类似的东西: ST_Area(ST_Buffer(geom, -10)) as neg_buffer_area 在我的情况下,单位为米,因此10 m负缓冲。 对于窄多边形,该区域返回零(同样,几何图形将为空)。然后,我使用此列来过滤出狭窄的多边形。
10 qgis  postgis  slivers 

1
为什么st_intersects比&&更快
这是一张积分表。约1M条记录 SELECT COUNT(*) as value FROM alasarr_social_mv s; Output: 976270 看起来st_intersects强制使用空间索引,但&&却没有。 采样使用ST_Intersects(282ms) SELECT COUNT(*) as value FROM alasarr_social_mv WHERE ST_Intersects( the_geom_webmercator, ST_MakeEnvelope(-410961,4920492,-402305,4926887,3857) ) Aggregate (cost=34370.18..34370.19 rows=1 width=0) (actual time=282.715..282.715 rows=1 loops=1) -> Bitmap Heap Scan on alasarr_social_mv s (cost=5572.17..34339.84 rows=60683 width=0) (actual time=21.574..240.195 rows=178010 loops=1) Recheck Cond: (the_geom_webmercator && '0103000020110F0000010000000500000000000000441519C1000000002BC5524100000000441519C1000000C069CB524100000000048E18C1000000C069CB524100000000048E18C1000000002BC5524100000000441519C1000000002BC55241'::geometry) …

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.