Questions tagged «postgis»

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

1
Postgis-挤出多边形
我想在Postgis中拉伸多边形以创建伪3D效果。为此,我编写了一个粗略的函数来实现它。这是非常多的测试代码,它为多边形上的每个点创建一个新的Y顶点,然后通过返回原始点将其关闭:- CREATE OR REPLACE FUNCTION public.extrude_polygon(wkb_geometry_param geometry, height integer, simplify boolean DEFAULT false) RETURNS geometry AS $BODY$ DECLARE f int; ret_geom geometry; wkb_geometry geometry; BEGIN --convert polygon to linestring IF ST_GeometryType(wkb_geometry_param) != 'ST_Polygon' THEN RETURN NULL; END IF; IF simplify THEN wkb_geometry = ST_Simplify(ST_Transform(ST_Exteriorring(wkb_geometry_param), 27700), 0.5); ELSE wkb_geometry = ST_Transform(ST_Exteriorring(wkb_geometry_param), …

2
当用Geoserver和PostGIS数据存储发布图层时,日期值为何显示尾随的“ Z”?
我已经使用Geoserver 2.2.x和PostGIS 2.0.1(PostgreSQL 9.1.x)数据存储发布了各个层。仅具有日期值而没有与时间/时间戳相关的值的字段存储为日期。在将我的图层发布为wfs / wms并在浏览器中打开表格后,日期vlu显示为带有尾随的'Z'。 这是geoserver使用的geotools数据存储api的产品吗? 我认为,geotools数据存储区api在数据读取日期,日期时间,时间戳记等方面给与了铺垫,并且显示了zulu时间的“ z”。我可能完全不考虑我的geotools假设,但是在PostgreSQL中,“ z”表示zulu或utc。 如果数据源值存储为日期,并且没有时间成分,为什么在日期字段中尾随“ Z”?


2
是否有ArcGIS 10.X的桌面GIS替代品可用于拓扑和矢量合并?
除了ArcGIS for Desktop以外,还有其他选项可用于在桌面GIS中强制执行拓扑规则和自动拓扑完整性吗?我正在寻找可以将要素自动捕捉到某些基础层边界(消除数据集中的间隙和重叠)的东西。 我了解PostGIS拓扑功能,但是我希望在桌面GIS中有所帮助。 QGIS 2正在尝试实施拓扑规则,但是没有办法自动清除数据。 Esri的ArcGIS for Desktop实际上是唯一的解决方案吗?

1
是否基于PostGIS / PostGresQL中的最大重叠量进行联接?
我在两个表中有两组多边形。这些集合彼此重叠。对于集合A中的每个多边形,我想获取集合B中重叠最多的多边形的ID。我正在使用带有PostGIS扩展名的PostgreSQL。 我对SQL足够了解,因此只能基于对/错条件进行联接。所以这行不通: SELECT a.id as a_id, b.id as b_id, FROM a JOIN b ON max(ST_Area(ST_Intersection(a.geom, b.geom))) 因为max()不能在ON子句中。 ST_Intersects()是对/错测试,因此我可以参加,但是集合A中的多边形通常会与集合B中的多个多边形重叠,因此我需要知道哪个重叠最多。无论重叠的程度如何,ST_Intersects大概只会返回遇到的第一个重叠ID。 这似乎应该可行,但这超出了我。有什么想法吗?

2
如何在PostGIS中识别和简化点簇?
我刚刚开始使用空间数据库,我想编写一个SQL(PostGIS)查询来自动概括原始GPS轨迹(具有固定的跟踪频率)。我要唤醒的第一件事是一个查询,该查询以查询形式(例如“ y米距离内的x个点”)标识停顿点,以用代表点代替大量点云。我已经意识到要在一定距离内捕捉点并计算捕捉的点。在下面的图片中,可以看到原始示例轨迹(小的黑点)和捕捉点的中心为彩色圆圈(大小=捕捉点的数量)。 CREATE table simplified AS SELECT count(raw.geom)::integer AS count, st_centroid(st_collect(raw.geom)) AS center FROM raw GROUP BY st_snaptogrid(raw.geom, 500, 0.5) ORDER BY count(raw.geom) DESC; 我对这个解决方案非常满意,但是存在时间问题:将轨道想象成一个城市中的全日轨道,人们可以返回到之前已经访问过的地方。在我的示例中,深蓝色圆圈代表该人两次访问过的房屋,但我的查询当然忽略了它。 在这种情况下,复杂的查询应仅收集带有连续时间戳(或id)的点,以便在此处产生两个代表点。我的第一个想法是将查询修改为3d版本(时间为三维),但似乎不起作用。 有人对我有什么建议吗?我希望我的问题清楚。 谢谢您的创意。我意识到要制作和简化线串,如下面的屏幕截图所示(点是原始点)。 我仍然需要确定休息地点(半径小于x米的x点),理想情况下是到达时间和离开时间的一个点……还有其他想法吗?
11 postgis  point  time 

2
用栅格信息填充PostGIS数据库的优点/缺点是什么?
...而不是将栅格保留为本地存储的GEOTIFF? 我有一个大型项目,需要向基于OpenLayers的网络地图提供大约50,000个10mb GEOTIFF作为WMS。在任何给定时间仅显示1个WMS,因此性能不是问题。考虑此应用程序的MapServer和GeoServer。 我想知道存储此类数据的优点和缺点。当栅格数据更改更加困难时,将更新PostGIS数据库,而不是替换单个(或一系列)栅格文件。使用PostGIS,WMS的加载时间大大缩短了吗?
11 postgis  raster 

1
将私有shapefile数据与OSM数据合并(合并)
背景 从Geofabrik下载了Alberta OSM数据,并使其在使用PostgreSQL 9.1,PostGIS 2.0,Mapnik 2.1.0,osm2pgsql,Apache 2,mod_tile,rendered和OpenLayers的专用Linux服务器上运行: 数据使用osm2pgsql以下方式导入: osm2pgsql -W -K -S /usr/local/share/osm2pgsql/default.style -d osm alberta.osm.bz2 问题 艾伯塔省的OSM数据不完整。给了我一组可以改善OSM数据的shapefile: City.dbf, City.prj, City.sbn, City.sbx, City.shp, City.shp.xml, City.shx 加上用于村庄,市区,市辖区边界等的其他shapefile。我已经使用pgAdmin 插件成功将shapefile导入到PostgreSQL中。该City.prj文件描述了其投影,如下所示: GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]] shapefile数据和OpenStreetMap(OSM)数据都有各自的数据库,但是我相信我想将shapefile数据导入OSM数据库。(这是专用服务器和OSM数据的本地副本; shapefile数据无法合法共享。) 更新#1 需要明确的是,shapefile不包含道路:只有市政边界(绝对不是OSM数据的一部分),城市(其中一些是OSM数据的一部分)和较大城市的城市边界(其中一些可能与OSM数据冲突)。 题 如何将shapefile数据与OSM数据合并,以使新城市出现在地图上? 注意:我主要关心的是解决重复数据(例如,OSM和采购的shapefile中都列出了Edmonton)。 相关链接 http://wiki.openstreetmap.org/wiki/Shapefiles http://wiki.openstreetmap.org/wiki/Import/Shapefile http://wiki.openstreetmap.org/wiki/Convert_shp_to_osm_using_grass_and_gpsbabel https://github.com/wavded/js-shapefile-to-geojson http://redmine.yellowbkpk.com/projects/list_files/geo http://www.gdal.org/ogr2ogr.html http://wiki.openstreetmap.org/wiki/Ogr2osm https://github.com/andrewguertin/ogr2osm http://svn.openstreetmap.org/applications/utils/import/shp2osm/ http://crschmidt.net/blog/archives/354/polyshp2osm/ http://www.mail-archive.com/talk@openstreetmap.org/msg12487.html 谢谢!

3
通过Web编辑PostGIS / GeoServer数据?
我已经安装了PostGIS,并想创建一个Web应用程序来进行一些简单的编辑: 使用捕捉点(点,线的终点,交点,圆心)手动(在底图上)绘制点,线和折线 删除点,线和折线 围绕一个点旋转一条线或一组线 用基点移动一条线或一组线 移动折线和点(手动移动到坐标给定的点) 编辑折线和折线的折点位置(手动以及由坐标给定的点) 在点,线和折线周围创建缓冲区 通过网络做到这一点的最佳方法是什么?有没有已经建立的JavaScript库?

1
对同一几何表中的两个点进行简单的PostGIS ST_Distance查询?
注意:这个问题在在发表#1 首。 我有一个几何表points_table,里面SRID 4326有几点。 我需要从该表中找到一对点(特征)之间的距离。 我想选择一个点与id = X另一个点,id = Y然后用ST_Distance函数找到它们之间的距离。 我知道如何从数据库中查询这两点: select * from points_table where id = X or id = Y; 但是此查询返回的结果不知道如何传递给ST_Distance,因为ST_Distance它需要2个参数。 我努力了 Select ST_Distance(select the_geom from points_table where id = X or id = Y); 但这显然是错误的。 如何从表格中找到两个几何点(特征)之间的距离? PS到目前为止,我发现的所有示例都显示了ST_Distance用法,这些点已硬编码到ST_Distance函数的参数中。我还没有找到一个示例,其中ST_Distance用于计算同一张表中两个点之间的距离。

3
Web绘图软件可用于巨大的栅格时间序列吗?
我是一位ArcGIS Desktop用户,他是第一次进入Web映射领域。遵循在GIS.SE上找到的建议,我从OpenGeo的免费教程开始。 但是,我开始意识到,大多数演示和示例都针对矢量数据。我的主要项目涉及显示300帧时间序列的5000 x 5000像素栅格。在我的台式计算机上,这些文件存储在单个5000x5000x300 16位整数BIP二进制文件中,总计约为8GB。 我的目标是能够单击一个单元(时间序列中单个栅格),并弹出一个图形,以显示该像素在300个元素的时间序列中的值。 每个时间序列图使用的栅格数据必须无损存储,尽管单击的叠加图可能是有损缓存。 (对于新手Web GIS开发人员)是否有比OpenGeo更适合此项目的内容?还是我应该继续进行此设置? 作为参考,我具有Python,Java和PHP的编程经验。我对SQL没有太多的经验。这是一个开放式项目,所以我有足够的时间学习新语言。我已经有一个Web服务器,尽管我可能不得不切换主机,因为GoDaddy在没有VPS的情况下似乎并不支持PostgreSQL。 谢谢你的帮助! 编辑:(1月13日) 我仍在寻找有关如何最好地存储3维16位整数BIP栅格并能够有效查询数据的单个z轴“列”的信息。我不想将其转换为32位格式(因为这会使文件大小从当前的16位格式增加一倍)。

3
多个多边形的点入多边形算法
我有一张Google地图,上面有一堆多边形。 这是我感兴趣的一个问题:给定一个纬度点,确定该点所在的所有多边形的最佳方法是什么? 一种明显的方法是为每个多边形迭代运行“多边形中的点”算法,但是我想知道是否存在一种有效的算法来回答此类查询,尤其是在您有数千个多边形的情况下。

1
在QGIS或PostGIS中将线层对齐到网络
我有公交路线上的GPS数据,现在我想将其捕捉到我的道路网络中。这两个层都是PostGIS DB中的线层。我想使用QGIS或PostGIS,但是如果必须使用GRASS或ArcMap,也可以。谢谢! 为了澄清,我试图将线对齐到线,而不是指向线。
11 postgis  qgis  snapping 

1
ST_ClosestPoint(线,点)不与线相交
在我的PostGIS数据库(Postgres 8.4.1上的PostGIS 1.5)中,我有两个表:道路(由线串组成)和崩溃(由点组成)。我一直在尝试将每次撞车事故与道路相关联,但是在执行以下操作时遇到了问题: SELECT ST_ClosestPoint(road.the_geom, crash.the_geom), ST_Intersects(ST_ClosestPoint(road.the_geom, crash.the_geom), road.the_geom) ST_Distance(ST_ClosestPoint(road.the_geom, crash.the_geom), crash.the_geom) AS distance FROM --Table crashes is already in SRID 4326 (SELECT the_geom FROM crashes WHERE gid = 360) as crash, (SELECT ST_SetSrid(the_geom, 4326) as the_geom from roads) as road ORDER BY distance; 该查询应该在每条道路上使用gid 360返回最接近崩溃的点,但是ST_Intersects函数对于第一个结果将返回false(所有道路上的真实最近点)。难道我做错了什么?还有另一种方法可以将撞车事故与最近的道路联系起来吗?
11 postgis  query 

4
ST_Intersection慢查询
我正在尝试在两层之间执行交集: 代表某些道路的折线图层(约5500行) 代表不同兴趣点(约47,000行)周围形状不规则缓冲区的多边形层 最终,我想做的就是将折线剪切到许多(有时是重叠的)缓冲区中,然后对每个缓冲区中包含的道路总长度求和。 问题是事情运行缓慢。我不确定应该花多长时间,但在超过34小时后才中止查询。我希望有人可以指出我的SQL查询出错了,或者可以指出一种更好的方法。 CREATE TABLE clip_roads AS SELECT ST_Intersection(b.the_geom, z.the_geom) AS clip_geom, b.* FROM public."roads" b, public."buffer1KM" z WHERE ST_Intersects(b.the_geom, z.the_geom); CREATE INDEX "clip_roads_clip_geom_gist" ON "clip_roads" USING gist (clip_geom); CREATE TABLE buffer1km_join AS SELECT z.name, z.the_geom, sum(ST_Length(b.clip_geom)) AS sum_length_m FROM public."clip_roads" b, public."buffer1KM" z WHERE ST_Contains(z.the_geom, b.the_geom) GROUP …

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.