地理信息系统

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

1
PostGIS:如何合并共享相同属性值的连续要素?
我有一个很大的PostGIS表,用于存储线要素。 我想合并彼此连接并具有相同属性值的要素。以下是我想要实现的示例。 不会合并最外面的要素(黑色和蓝色的要素),因为即使它们的属性值相同也不会连续 绿色和红色要素已合并,因为它们同时符合两个条件 仍然保留黄色功能。 您将如何通过SQL查询实现这一目标?

1
将GDAL添加为对Python包的依赖项?
我正在尝试打包一个将GDAL用于PyPI的Python脚本。我首先在我的文章中加入了直接参考setup.py: install_requires=['GDAL==1.11.2'], 这样,程序包无法在我的测试虚拟环境中安装: extensions/gdal_wrap.cpp:2855:22: fatal error: cpl_port.h: No such file or directory #include "cpl_port.h" ^ compilation terminated. error: Setup script exited with error: command 'x86_64-linux-gnu-gcc' failed with exit status 1 然后,我尝试使用对的引用pygdal,因为它被标记为virtualenv友好版本: install_requires=['pygdal'], 这样,安装完成就不会出现错误(但是会加载通常的编译警告)。但是,当我随后调用脚本时,我得到此错误: Traceback (most recent call last): File "/home/desouslu/.virtualenvs/test_p3/bin/hasc2gml", line 5, in <module> from pkg_resources import load_entry_point File "/home/desouslu/.virtualenvs/test_p3/lib/python3.4/site-packages/pkg_resources.py", …
9 python  gdal 

1
减少R中图例项之间的距离?
我正在尝试choropleth()使用GISTools包在R中创建正确的地图。我choro.legend()用来显示我的图例。但是我无法创建正确的图例位置,并且/或者我不了解fmt参数在choro.legend()函数中的作用。在我看来,fmt可以减少我的图例颜色和描述之间的空间。 我发现choro.legend帮助页面显示fmt为“上述choropleth类限制中所述值的C样式格式”。 因此,这应该仅与我的类值一起使用,而不是由图例项本身之间的距离决定? 或者这是人类可以理解的含义? 如何缩小我choro.legend()的商品之间的距离? choropleth(my.shp, nc.lI[,1], shading = income.shade) choro.legend(-12919698, 5314317,income.shade,title='My title',cex=0.8, bty = "n", fmt = "%0.1f")
9 r  legend  choropleth 

4
使QGIS属性表字段自动执行?
我正在以某种方式使用QGIS和我拥有的Excel工作表进行水文项目。为此,我想提取包含在代表管道截面的矢量层中的线的一些信息。 我需要提取的信息是: 身份证号 长度 X,Y起始和结束坐标 我找到了一种使用“ $ length”和另一种用于X和Y坐标的算法捕获该字段的方法,但是为此,我需要打开Attributes表,将表达式放在每个属性列中,然后单击以更新字段。 当我画一条线时,有没有办法自动填写这些字段?也就是说,我绘制/编辑一条线(开始编辑或结束节点),当我打开属性表时,将填充并更新长度字段和坐标X,Y。

3
前哨2投射偏移
我最近观察到Sentinel 2数据的地理投影发生了变化。请查看下面的屏幕截图以进行澄清(仅颗粒T33UXP,Band 8)。第一幅图像于20160314拍摄,第二幅图像(经偏移)于20160403拍摄。我添加了一个多边形作为参考。这是从API集线器下载的未处理数据。S2A_OPER_MSI_L1C_TL_SGS__20160314T171554_A003794_T33UXP_N02.01 S2A_OPER_MSI_L1C_TL_SGS__20160403T152610_A004080_T33UXP_N02.01 还有其他人观察到吗?这是已知问题还是仅在我的特定情况下会发生?

1
QGIS为什么不从.prj文件检测CRS?
我在postgreSQL / postGIS数据库中有许多1公里的六角形网格,覆盖了美国的各个县。每个网格具有CRS EPSG:3857,而县层具有EPSG:3857。在QGIS中使用县查看网格时,一切看起来都很宏伟。 但是...为了与同事共享这些网格,我不得不使用ogr2​​ogr将它们导出到shapefile。在QGIS中查看这些图像时,每个网格看上去都在大约20 km左右移动,并且QGIS自动将CRS设置为EPSG:3395(这不是项目CRS)。 当我从QGIS导出postGIS表作为shapefile 时,.prj文件看起来与ogr2ogr导出的shapefile完全相同,但是postGIS导出的表正确显示。我注意到从QGIS导出shapefile时QGIS会创建一个.qpj文件,因此得出的结论是QGIS忽略了.prj而是在寻找.qpj。为什么没有.qpj的情况下无法读取.prj?其他shapefile(例如来自美国人口普查的shapefile)没有.qpj,但QGIS可以正确显示这些文件。 我想出了一种解决方法,方法是保存default.qpj并为此使用ogr2​​ogr导出的每个文件为此创建一个新的.qpj,但这似乎很麻烦,而且显然不可复制,因为它仅适用于EPSG:3857。 旁注:我正在使用QGIS 2.0.1。 编辑: 这是我使用的ogr2ogr命令: ogr2ogr -f "ESRI Shapefile" /home/matt/data/hex_grid_1 PG:'dbname=mydb user=matt' hex_grid_1 .prj的内容: PROJCS [“ WGS_84_Pseudo_Mercator”,GEOGCS [“ GCS_WGS_1984”,DATUM [“ D_WGS_1984”,SPHEROID [“ WGS_1984”,6378137,298.257223563]],PRIMEM [“ Greenwich”,0],UNIT [“ Degree”,0.017453292519943295] [“ Mercator”],PARAMETER [“ central_meridian”,0],PARAMETER [“ false_easting”,0],PARAMETER [“ false_northing”,0],UNIT [“ Meter”,1],PARAMETER [“ standard_parallel_1”,0.0] ] .qpj的内容: PROJCS …
9 qgis  postgis  ogr2ogr  epsg 


1
优化面查询中的很大点
我有一个地址点的国家数据集(3700万个)和一个洪水泛滥的多边形数据集(200万个),类型为MultiPolygonZ,某些多边形非常复杂,最大ST_NPoints约为200,000。我正在尝试使用PostGIS(2.18)识别洪泛多边形中的地址点,并将其写入具有地址ID和洪灾风险详细信息的新表中。我从地址角度(ST_Within)进行了尝试,但是从洪水区域角度(ST_Contains)开始进行了交换,其理由是存在大面积区域而根本没有洪水风险。两个数据集都已重新投影到4326,并且两个表都具有空间索引。我下面的查询已经运行了3天,并且没有任何迹象表明很快会完成! select a.id, f.risk_factor_1, f.risk_factor_2, f.risk_factor_3 into gb.addresses_with_flood_risk from gb.flood_risk_areas f, gb.addresses a where ST_Contains(f.the_geom, a.the_geom); 有没有更好的方法来运行此?另外,对于这种类型的长时间运行的查询,除了查看资源利用率和pg_stat_activity之外,监视进度的最佳方法是什么? 我的原始查询完成了3天,虽然还可以,但是我在其他工作上步履蹒跚,所以我从来没有花时间尝试解决方案。但是,到目前为止,我刚刚重新访问了该文档并完成了建议。我使用了以下内容: 使用此处建议的ST_FishNet解决方案在英国建立了50公里的网格 将生成的网格的SRID设置为British National Grid并在其上建立空间索引 使用ST_Intersection和ST_Intersects裁剪了我的洪水数据(MultiPolygon)(这里唯一需要注意的是,我必须在geom上使用ST_Force_2D,因为shape2pgsql添加了Z索引 使用相同的网格裁剪我的点数据 在行上创建索引,在每个表上创建col和空间索引 我现在准备运行我的脚本,将遍历行和列的结果填充到一个新表中,直到覆盖全国为止。但是只是检查了我的洪水数据,一些最大的多边形似乎在翻译中丢失了!这是我的查询: SELECT g.row, g.col, f.gid, f.objectid, f.prob_4band, ST_Intersection(ST_Force_2D(f.geom), g.geom) AS geom INTO rofrse.tmp_flood_risk_grid FROM rofrse.raw_flood_risk f, rofrse.gb_grid g WHERE (ST_Intersects(ST_Force_2D(f.geom), g.geom)); 我的原始数据如下所示: 但是剪辑后看起来像这样: 这是一个“缺失”多边形的示例:

2
使用内存层作为Runalg的输入和/或输出?
可以将存储层用作runalg的输入和/或输出吗? 使用runandload可以使它工作: processing.runandload("qgis:mergevectorlayers","memory:bufferOne", "memory:bufferTwo", r"memory:merged") processing.runandload("qgis:dissolve", r"memory:merged", True, '', r"D:\PythonTesting\dissolved.shp") 参数2和3是输入层,它们已经在内存中,参数3是输出层,它被写入内存并在以下工具(Dissolve)中使用。这可以正常工作,但是当我尝试对runalg使用相同的逻辑时,似乎未创建我在内存中的合并层,因为Dissolve工具从不运行。例如,以下内容将不起作用: processing.runalg("qgis:mergevectorlayers","memory:bufferOne", "memory:bufferTwo", r"memory:merged") processing.runandload("qgis:dissolve", r"memory:merged", True, '', r"D:\PythonTesting\datenschrott\dissolved.shp") 我可以假设runalg要么不接受内存中的图层,要么不输出任何图层?

2
在PostGIS中特定距离的点之间画线?
我有沿着街道的点的数据,我想将这些点变成简单的彩色线。有什么指针可以解决这个问题,或者有什么算法可以帮助我解决这个问题? 我希望使用PostGIS函数来执行此操作,但是我愿意接受建议,这是来自.shp文件的数据。 Edit1:更新了图片以演示此问题的理想解决方案。 画线纯粹是基于这些点之间的距离,没有别的可用于分组的依据。理想情况下,这将是沿投影线的最大指定距离处的点吗?通过投影线,我的意思是找到第一个点,然后找到最靠近它的下一个,然后投影一条线,并检查该线上是否有任何点与该线上已经存在的任何点具有最大距离。
9 postgis  line 

2
删除特征时如何减小shapefile的大小?
这个小小的脚本删除了所有图层中的所有小功能。这可以正常工作,但.shp文件的大小不会减小。请告诉我为什么... canvas = iface.mapCanvas() expr = QgsExpression("$length<100") for l in canvas.layers(): l.startEditing() it = l.getFeatures(QgsFeatureRequest(expr)) for ft in it: l.deleteFeature(ft.id()) l.commitChanges()
9 qgis  python 

2
如何在桌面上使用ArcGIS Tile软件包
我前一段时间参加了ArcGIS Online培训课程,并且在Tile Packages上学到了更多信息。我按照说明进行操作,如何创建瓷砖包, 并为一些航拍创建了瓷砖包。这个过程完成了,我现在有了一个不错的68GB瓦片包。 我想在ArcGIS Desktop中本地使用此软件包,但是每当我将AirPhoto.tpk添加到ArcMap时,它都会冻结并保持原样。我有一台功能强大的PC,尝试添加它时资源没有耗尽,它似乎冻结了ArcGIS桌面。我尝试等待约12个小时才能完成该过程,但仍然处于冻结状态。 我已经能够共享一个不同的程序包,并将其存储在ArcGIS Online上,然后将其放回桌面。该选项对航拍照片实际上无效,因为我会尽全力将其存储在网上。我在这里有ArcGIS for Server,并认为我会尝试在其中添加并共享它。 我在这里做错了什么?我需要打开包装还是其他东西,如果是的话,瓷砖包装的意义是什么?我当前正在运行10.3 Advanced,升级到10.4是否可以解决此问题?

1
自动化QGIS项目编辑器打印?
我有一个大型项目,包含大约10个QGIS项目文件。每个项目都包含一个打印作曲家,该作曲家设置了可生成多达10张地图的地图集。 使用作曲者地图集自动打开每个项目并创建PDF的最简单方法是什么? (像这样的东西是理想的-不确定是否可能) C:\ OSGeo4W \ bin \ qgis.bat-项目MyProject1.qgs-代码SaveAtlasAsPdf.py C:\ OSGeo4W \ bin \ qgis.bat-项目MyProject2.qgs-代码SaveAtlasAsPdf.py

2
SQL Server-选择嵌套在较大多边形内的所有多边形
这是一个看似简单的SQL Server几何问题,我以为可以使用一种即用型的解决方案,但是我找不到运气。 我的目的是选择一个表中具有多边形的所有记录,这些记录嵌套(包含)在另一个表的较大多边形中。我有预期的功能STWithin,STContains也有需要提供的解决方案,但是不幸的是,它们都只识别嵌套在较大多边形中的内部多边形,而不识别那些接触较大多边形边界的嵌套多边形。例如参见图片。 满足我的需求的另一个选择是STIntersection。但是,此函数的问题在于它仅返回几何列!我想获取记录ID。有没有人对如何做到这一点有何建议? STWithin: select a.bg10 from gis.usa_10_block_group a join gis.usa_10_mkt_definition b on a.shape.STWithin(b.shape) = 1 where b.mktname = 'Loop' STContains: select a.bg10 from gis.usa_10_block_group a join gis.usa_10_mkt_definition b on b.shape.STContains(a.shape) = 1 where b.mktname = 'Loop' STIntersection: select a.shape.STIntersection(b.shape) from gis.usa_10_block_group a join gis.usa_10_mkt_definition b on a.shape.STIntersects(b.shape) = …

1
QGIS Server将UPDATE…WHERE NULL发送到WFS层中的postgis
我正在运行Windows Server 2012服务器。 PostgreSQL 9.3.5,64位 POSTGIS 2.1.3 QGIS服务器2.6.1-2 QGIS Desktop 2.8.3和2.12 我正在使用使用QGIS Desktop 2.12的Microsoft Surface Pro 4平板电脑来编辑存储在Postgresql数据库中的某些图层。数位板中的层是QGIS Server服务的WFS层。 当我在图层中插入一些数据以强制将数据发送并存储在服务器中后进行编辑时,有时更新未在数据库中进行。 我可以看到POST http请求可以很好地到达服务器,但是有时我看不到数据库中的提交(更新),而有时它可以正常工作并执行提交。 在QGIS Server的日志中,我可以看到(我在QGIS Desktop中更新了3个功能的数据): //QGIS SERVER RECEIVED HTTP POST FROM QGIS DESKTOP [4852][11:11:19] ********************new request*************** [4852][11:11:19] remote ip: 192.168.144.20 [4852][11:11:19] CONTENT_TYPE: text/xml [4852][11:11:19] HTTP_USER_AGENT: Mozilla/5.0 QGIS/2.8.2-Wien [4852][11:11:19] MAP:D:\OSGeo4W\apps\qgis\bin\alumbrado\alumbrado.qgs [4852][11:11:19] REQUEST:Transaction …

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.