地理信息系统

制图师,地理学家和GIS专业人员的问答

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将为第一个数据库连接输入的凭据也用于其他任何连接? 我无法估计是否可以按以下建议修改“输入凭据”对话框,但这是否可能?

1
QGIS 2.18.10支持哪些SAGA版本?
从QGIS 2.18.10开始,SagaAlgorithmProvider不再有名为的字典supportedVersions。以前,它看起来像这样: supportedVersions = {"2.1.2": ("2.1.2", SagaAlgorithm212), "2.1.3": ("2.1.3", SagaAlgorithm213), "2.1.4": ("2.1.4", SagaAlgorithm214), "2.2.0": ("2.2.0", SagaAlgorithm214), "2.2.1": ("2.2.0", SagaAlgorithm214), "2.2.2": ("2.2.2", SagaAlgorithm214), "2.2.3": ("2.2.3", SagaAlgorithm214), "2.3.0": ("2.3.0", SagaAlgorithm230), "2.3.1": ("2.3.0", SagaAlgorithm230)} 现在它只是说: if not version.startswith('2.3.'): ProcessingLog.addToLog(ProcessingLog.LOG_ERROR, self.tr('Problem with SAGA installation unsupported SAGA version found.')) 因此,我假设现在仅支持从2.3开始的SAGA版本。但是,在我的QGIS GUI中,“日志消息面板”告诉我不支持SAGA 2.3.1版(有趣的是,您可以在诸如的自定义应用程序中使用SAGA 2.3.1 RQGIS)。那么QGIS 2.18.10支持哪些SAGA版本?

1
脚本化Atlas中基于表达式的标签无法更新
我尝试遵循以编程方式从模板加载作曲家,并使用pyQgis生成图集,以使用pyqgis自动化图集打印作曲家: 具体在图集代码中说: myAtlasMap = myComposition.getComposerMapById(0) myAtlas = QgsAtlasComposition(myComposition) myAtlas.setCoverageLayer(atlas_desktop) myAtlas.setComposerMap(myAtlasMap) myAtlas.setFixedScale(True) myAtlas.fixedScale() myAtlas.setHideCoverage(False) myAtlas.setFilterFeatures(True) 此代码适用于我的任务,我使用了100张新的Atlas功能图,但在我的template.qpt代码中有一些这样的标签: QGIS [%concat( "OBJECTID" )%] 这OBJECTID是所有新的100册feutures地图相同。知道为什么吗?如果我使用手动地图集导出,则可以进行任何地图OBJECTID更改。 我有更多详细信息,在我template.qpt有一些基本样式规则或基本标签规则的情况下,true不起作用与图层图集相关的任何内容: intersects($atlasgeometry, $geometry ) 要么 $id = $atlasfeatureid 那就是100张地图中的一些: 我认为,以编程方式从模板加载composer并使用pyQgis生成图集只是从我的图集层中逐一导出我的特征,而模板中的图集保持为False。 任何的想法 ?

2
使用LiDAR数据识别约书亚树吗?
我正在进行一个LiDAR项目,以确定约书亚树在指定研究区域内的位置。由于植被稀疏,那里确实有2种树冠物种,即约书亚树和杨木。由于树冠中的物种丰富度非常有限,我认为这是一个相对容易的LiDAR分析。我的方法是创建一个地球栅格(DEM),然后创建第一个返回栅格。然后,我将从第一个返回栅格中减去裸土以创建植被栅格。通过使用底图进行验证,我可以轻松消除任何噪音(例如电源线,建筑物)。因为客户希望查看所有约等于12英尺的约书亚树,所以我只需要对植被栅格进行重新分类。这样,我应该能够看到我研究区域内的所有树种,应该是约书亚树。 这是我在ArcMap中遵循的方法: 创建裸土层 使用创建LAS数据集工具创建所选研究区域的las数据集 使用“创建LAS数据集图层”工具 a 在该图层上创建las数据集图层。从类代码中选择2(接地) 使用LAS数据集转栅格工具将此图层转换为栅格。 创建植被层 使用Make LAS DATASET LAYER工具时,请在返回值(可选)下重复步骤2和3,但仍要选择第一个返回。 使用减号工具从第一返回栅格中减去裸地球栅格 1st Return (raster) – Bare Earth (raster) = Vegetation Layer 使用“重分类”工具确定12英尺及更大的高度: Classification: Natural Breaks (Jenks) Classes: 2 Break values: 3.66, 10.725098 是否有人对此有任何经验,并且可能能够提供一些提示/指针,以说明我可能会出错的地方?如果人们知道更好的方法,那么我就会开放意见!

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

3
ArcGIS在字段的特定部分查询特定字符
使用ArcGIS 10.2.2,我在SDE属性表中有一个字符串字段。我需要帮助来创建查询以选择在字段的第6个和第7个字符中都为零的所有记录(即1995-0023A)。为了帮助我更好地理解这种查询,我还希望能够看到一个查询,该查询选择字段的第6个字符中的零记录。然后,我可以使用“ and”子句并将其复制以选择第7个字符。 我试过了的变体, "FIELD1" LIKE '%00_______'但是它没有选择字符串中正确位置的双零记录。

1
如何使用R将颜色分配给特定的栅格值
我正在使用levelplot超赞rasterVis包的功能来创建一个地图,其值在零附近变化。我正在使用红色到蓝色调色板绘制栅格文件,但是我试图在地图中将灰色分配为零值。 具体来说,我想复制此图的颜色: 请注意,这里使用的是红色到蓝色的比例,但零值已用灰色上色。 目前,我的地图如下所示: 这是再现它的代码(文件可在https://www.dropbox.com/s/cypfdu1eaz2fuok/r.annual.tif?dl=0上获得): # Load required packages library(rasterVis) # open file r.annual <- raster("Downloads/r.annual.tif") # Set color palette myTheme=rasterTheme(region=brewer.pal('RdBu', n=11)) # Plot levelplot(annual.mask, par.settings=myTheme, margin=F) 如何在上面的地图中为所有零值分配灰度?


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 …

2
何时在QGIS中启用“即时” CRS转换?什么时候关闭它?
我了解“动态”功能,并且重新阅读了https://docs.qgis.org/2.6/en/docs/training_manual/vector_analysis/reproject_transform.html 我倾向于一直打开它,但是我不知道这是否正确?我知道这可能会引起问题。 我已经浏览了相关的问题,它们都倾向于在用户遇到问题时出现,并且由于人们询问其特定数据集和各自的CRS而变得更加复杂。 有什么简单的经验法则可以回答何时打开“实时运行”以及何时关闭?

1
QGIS-是否可以在属性表中将重音字符转换为普通字符?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使其成为地理信息系统堆栈交换的主题。 3年前关闭。 我有OSM数据集,其中包含带有国家字符的名称(这是CSV导出,但是我在SHP中有它): osm_id,code,fclass,population,name,longitude,latitude 276645544,1003,village,221,Krč,14.248410,49.194988 444571400,1003,village,88,Radonice,14.548085,49.143251 488567474,1003,village,115,Doubravka,14.363835,49.282158 488567478,1003,village,114,Koloměřice,14.399437,49.280328 488567484,1003,village,111,Údraž,14.309249,49.281551 491452727,1004,hamlet,33,Poněšice,14.481200,49.105121 601855465,1003,village,147,Hvožďany,14.433230,49.286094 631878480,1003,village,211,Myšenec,14.208999,49.223213 并希望将它们转换为以下形式: osm_id,code,fclass,population,name,longitude,latitude 276645544,1003,village,221,Krc,14.248410,49.194988 444571400,1003,village,88,Radonice,14.548085,49.143251 488567474,1003,village,115,Doubravka,14.363835,49.282158 488567478,1003,village,114,Kolomerice,14.399437,49.280328 488567484,1003,village,111,Udraz,14.309249,49.281551 491452727,1004,hamlet,33,Ponesice,14.481200,49.105121 601855465,1003,village,147,Hvozdany,14.433230,49.286094 631878480,1003,village,211,Mysenec,14.208999,49.223213 删除了重音符号,因此您将“ c,s,r,a”代替“č,š,ř,á”等。我不必编辑当前列-可以使用转换后的名称创建新列。 我目前打算使用像一些在线工具,这一个 CSV文件,但是这将是巨大的,如果我能在QGIS直接解决这个问题。

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.