Questions tagged «postgis»

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

2
如何获取空PostGIS表的几何类型?
我有一个Web应用程序,需要在向其中插入行之前了解PostGIS表的geom字段的几何类型。我使用以下查询来确定geom列的几何类型: SELECT GeometryType(geom) FROM my_schema.building LIMIT 1 这将返回实际行的几何类型,因此当我的表为空时,它将不起作用。如何确定几何列本身的几何类型?
10 postgis 


1
使用PostGIS从点创建线?
我有一个包含大量车辆位置数据的PostGIS表,并希望从这些点创建线。 可以按车辆ID选择数据并按时间戳排序数据,但是如何根据结果创建行呢? 我基本上需要的是从点1到点2的一条线段,最终确定该线,然后再从点2到点3进行线段。当然,所有这些都需要考虑车辆ID。 后一种是必需的,因为我想计算车辆从一点到另一点的巡航方向和速度。

3
如何将OpenLayers连接到PostGIS数据?
我已经在OpenLayers中阅读了如何在OpenLayers中加载KML,GeoJSON等矢量文件。但是如何连接到PostGIS数据。如果不是,为什么我应该将数据上传到PostGIS,而不是直接使用WebServices放置数据。我有什么想念的吗? 我想加载此矢量数据,以便可以通过单击要素来查看属性。我需要PostGIS,因为将来我想启用查询。我认为只有维护像PostGIS这样的数据库才有可能。但是如何使用OpenLayers? 我已经阅读了《 OpenLayers入门指南》,但是没有提到任何地方。请帮忙!!

4
如何从[LINE | MULTILINE] STRING提取POINT
我想在其中创建一个vectorLayer,QGIS以显示形成DB LINESTRING或MULTILINESTRING存储在PostGISDB中的所有点。 我认为我需要将LINESTRING(或MULTILINESTRING)的所有点转换为POINT。 第一个问题: 有PostGIS功能吗? 第二个问题: 如果要从结果POINT表中排除重复的点,该怎么办?

2
您如何看待PostGIS中的部分3d功能?
我们具有来自调查数据的功能,其中包含部分3d信息。 最常见的示例是表示道路的2D LineString,其中包含在被调查的某些点的高程信息。其他示例包括屋顶形状-MultiLineString,其中某些关键点具有从建筑平面图中分配的标高,但不是全部。 使用PostGIS,您建议使用哪种数据模型来存储此类信息,以使其尽可能可访问,而不会丢失或生成内插信息?
10 postgis  data  3d  model 

1
如何管理具有不同投影的PostGIS Raster数据?
我需要存储和管理考古地球物理数据,这些数据以矩形样本阵列(栅格图像)的形式收集。 每个栅格通常将进行20x20或30x30浮点采样,通常以1m的间隔采样。 调查将在给定位置包含一个或多个这些图像。 有可能在不同的国家或地区使用不同的预测进行两次不同的调查,但是每项调查将使用一个且仅一个预测。 永远不会一起查看它们,每个调查通常都会独立进行。 只能通过自定义的前端访问数据,因此不会有用户通过它psql或类似方法直接控制它。 每个样本都需要在收集时进行存储,因此我无法将其重新投影到常见的CRS(例如Web Mercator)中,因为一个样本最终可能会覆盖比原始投影更大或更小的区域,因此需要进行分析在数据上。 如何最好地将数据存储在PostGIS Raster数据库中?我提出的选择是: 忽略SRID约束并将所有数据存储在一个表中,编写我的前端代码来以一致的方式处理数据。 将所有数据存储在一个表中,并将SRID约束重写为SRID和测量ID的组合。 通过表继承,为每个新的SRID创建一个新表。 通过表继承,为每个调查创建一个新表。 1和2破坏了PostGIS的一些不错的自动化部分,但是将它们隐藏在前端代码中。但是查询可能需要更长的时间。 3和4可能会导致表格爆炸,从而使管理FK约束等工作变得更加困难。 实际上,每个调查的栅格数量在1到100甚至更多之间,调查的数量很可能会达到数百个。但是,不同预测的数量很可能仍然很低,这有利于3。
10 postgis  raster 


2
如何修复“孔位于外壳之外”
我得到了一个具有多边形形状的数据集,其中的几何由QGIS插件“ Geometry Updater ” 更新。现在我有一个问题,在PostGIS中,我得到了无效的几何图形,并显示了错误消息“孔位于外壳外部”。但是,当在QGIS中观察几何图形时,实际上有两种形状,其中一种是主要几何形状,另一种是(可能是)孔。 我以为原因是几何类型设置为ST_Polygon。但是即使将其更改为ST_MultiPolygon,错误仍然存​​在。有人知道如何解决此问题?也可以在QGIS中手动进行。 编辑: 这是图片中形状的原始WKT(将其更改为之前ST_MultiPolygon): POLYGON((681328.211640639 5312556.84866055,681333.876018639 5312566.85338355,681344.126811639 5312584.17146655,681360.13777864 5312605.81168455,681368.571629639 5312620.16794654,681375.15817664 5312633.84801255,681380.74133464 5312647.74367554,681384.01769064 5312658.41482554,681392.01169764 5312694.63471254,681393.07199764 5312701.83700354,681389.16681464 5312705.85459254,681379.79126564 5312704.26135554,681393.93193764 5312715.39845154,681401.81727164 5312723.43382354,681398.09962564 5312710.95653254,681395.19739764 5312693.68448654 ,681387.20535464 5312657.40285554,681383.87846764 5312644.38168654,681378.69327164 5312632.35257854,681367.00831364 5312610.47778954,681346.401239639 5312581.83289054,681336.365640639 5312564.27437955,681340.354365374374365679365468163768563752225764 5312565.30077054,681395.29993964 5312563.90629854,681410.98915364 5312545.67508754,681413.79585564 5312536.98783954,681415.77221864 5312530.93185454,681416.991529641 5312523.86320254,681406.38747164 5312515.12414654,681403.96790864 5312507.57002154,681395.94924164 5312514.30082354,681394.08765664 5312516.71419154,681390.91027864 5312518.71529654,681387.07111564 5312520.63375054,681381.90838164 5312522.38690354,681376.13571264 5312525.04785255,681366.362498639 5312530.79640254,681349.071127639 5312540.57236955,681332.287335639 5312550.05537054 ,681321.992430639 …

1
使用PostGIS查找给定2点的最近线?
我有一个表t,其中包含一列line_positionsline类型的列。给定2个点,我想找到最接近的直线,该直线足够接近(小于10公里)并且距离我想要避免的点(最小20公里)的距离不太远。目前我使用 SELECT t.* FROM path t WHERE ST_DWithin(ST_GeographyFromText('Point(69.835 22.596)'), t.line_positions, 10000, FALSE) AND ST_DWithin(ST_GeographyFromText('Point(69.856 22.519)'), t.line_positions, 10000, false) AND NOT ST_DWithin(ST_GeographyFromText('Point(-79.804 9.141)'), t.line_positions, 20000, false) ORDER BY ST_Distance(ST_GeographyFromText('Point(69.835 22.576)'), t.line_positions, false) + ST_Distance(ST_GeographyFromText('Point(69.856 22.519)'), t.line_positions, false) ASC LIMIT 1 ix_path_line_positionsline_positions列上有一个要点索引。 它有效,但速度很慢,在t中仅100000行在3s到30s之间。 解释分析给出: Limit (cost=9.95..9.95 rows=1 width=1432) (actual time=21729.253..21729.254 rows=1 loops=1) …

1
从QGIS简化PostGIS身份验证过程
在QGIS中,我有一个项目,其中包含来自各种(〜15个)PostGIS数据库的数据,没有为每个连接存储登录凭据(身份验证用户/ pwd),如下所示。 现在,当另一个用户打开项目时,他(或她)必须输入所用EACH数据库的凭据: 我非常担心,合法地我的用户都不愿意接受15次输入他(或她)的凭据的权限(但是在企业环境中可能有数百名用户,接受成功是成功的关键)。 所以对我来说有两个问题: 有没有一种方法可以根据全局项目变量来建议用户名,user_account_name并且 有没有办法告诉QGIS将为第一个数据库连接输入的凭据也用于其他任何连接? 我无法估计是否可以按以下建议修改“输入凭据”对话框,但这是否可能?

2
使用Postgis生成建筑物阴影
我目前正在为现有建筑物开发太阳能潜力估算工具。想法是使用建筑物(=多边形)的形状,其高度,并在给定的时间创建最终的阴影。我只会对太阳的几个位置进行测试。我知道草函数r.sun.mask,但是对于我想做的事情来说,它的功能太强大了。 现在,我只想在太阳向南(天空18度)时获得阴影。因此,建筑物应投下约三倍于其高度的阴影。 我想要得到的是: 我已经寻找了一段时间,但在postgis中没有找到任何工具来执行此操作。我当时在考虑缓冲然后切割多边形,但无法使其正常工作。您知道任何工具或有任何想法怎么做吗?

4
通过空间功能限制行
我正在尝试提高以下查询的性能。无论我如何编写查询(FROM子句中的子查询,WHERE子句中的子查询),postgres都坚持通过昂贵的ST_DWITHIN函数运行所有〜570K行,即使County = 24的行只有60行。在运行postgis函数之前,如何才能使postgres在County = 24上进行过滤,这对我来说似乎更快,更高效?700ms并不是引起太多关注的原因,但是随着该表增长到10M +,我开始关注性能。 还要注意,p.id是主键,p.zipcode是fk索引,z.county是fk索引,p.geom具有GiST索引。 查询: EXPLAIN ANALYZE SELECT count(p.id) FROM point AS p LEFT JOIN zipcode AS z ON p.zipcode = z.zipcode WHERE z.county = 24 AND ST_DWithin( p.geom, ST_SetSRID(ST_Point(-121.479756008715,38.563236291512),4269), 16090.0, false ) 说明分析: Aggregate (cost=250851.91..250851.92 rows=1 width=4) (actual time=724.007..724.007 rows=1 loops=1) -> Hash Join (cost=152.05..250851.34 rows=228 …

1
ST_BuildArea和ST_Polygonize有什么区别?
这两个函数ST_BuildArea和ST_Polygonize两个卷绕线和产生多边形。 似乎ST_BuildArea假设内圈代表孔并从结果中忽略孔,而将孔ST_Polygonize包括在结果中。而且使用这些功能的机制有些不同:ST_Polygonize是一个汇总,同时ST_BuildArea需要您使用自己捆绑输入ST_Collect。 除此之外,这两个功能之间是否有区别?
9 postgis 


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.