地理信息系统

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

5
在带有大表的Python中使用ArcGIS游标时如何提高性能?
我在文件地理数据库中有一个很大的点要素类(〜4 000 000条记录)。这是具有100m分辨率的常规点网格。 我需要在这一层上进行某种概括。为此,我创建了一个新网格,其中每个点位于4个“旧”点的中间: * * * * o o o * * * * o o o * * * * [*] =原始网格点-[o] =新网格点 每个新点的属性值都是基于旧网格中其4个相邻点的加权值来计算的。因此,我在我的新网格的所有点上循环,并针对它们中的每一个,在我的旧网格的所有点上循环,以查找邻居(通过比较属性表中的X和Y的值)。一旦找到4个邻居,我们就会跳出循环。 这里没有方法上的复杂性,但是我的问题是,根据我的第一个测试,该脚本将持续数周才能完成... 您是否有提高效率的可能性?我脑海中浮现出一些想法: 索引字段X和Y =>我这样做了,但是没有注意到任何明显的性能变化 进行空间查询以查找邻居,而不是基于属性的查询。这真的有帮助吗?ArcGIS中应该执行哪些空间功能?我怀疑,例如,缓冲每个新点会更有效 将要素类转换为NumPy数组。有帮助吗?到目前为止,我与NumPy的合作并不多,除非有人告诉我这可能真的有助于减少处理时间,否则我不愿涉足其中 还要别的吗?

4
使用QGIS简化几何图形工具简化相邻的多边形
我有一个有200,000个多边形的大Shapefile,但是对于使用它的应用程序来说,该文件太大了。我想概括这些多边形并创建更小的文件。 我尝试使用“简化几何图形”工具在QGIS中执行此操作。我已经在我的Shapefile的很小一部分上进行了尝试,并且对结果感到满意,但是有一个小问题,我不知道如何解决。我已附加图像以显示问题。 白色边界是简化之前的边界。RED边界经过简化。问题区域用橙色圈出。如您所见,“简化边界”包含一些在简化后不属于任何先前多边形的区域。 如何简化Shapefile并将多边形之间的公共边界保持为一条直线,并消除简化后创建的区域? 附加信息: 在遵循建议的说明之后 将多边形转换为线 简化线 将线转换回多边形 我得到以下结果。它比以前要好一些,但仍然可以得到原始多边形以外的区域(请参见下图中的白色区域)。 @Andrew建议我将每条线与相邻的多边形相关联,但是我不知道如何在QGIS中进行。 我仍在尝试完成简化多边形的过程。我遵循了这篇文章中建议的说明,当我认为我得到可接受的结果时,又出现了一个问题。以下是我对结果图像所做的摘要。所有步骤均已使用QGIS中的“处理”工具箱执行。 首先,我将多边形转换为线 其次,我使用带有break选项的v.clean清理了行。这导致清洁了矢量层和错误层。错误层(提供的图像上的绿点)在每个线的交点处都有绿点。我不知道这是什么意思。 第三,我使用“ SIMPLIFY GEOMETRY”工具简化了线条(导致图像中出现红线)。比较简化的红线和原始的橙色线,我对结果感到满意。 第四,我想使用“处理”中的“多边形化”工具将线转换回多边形,并得到了我没有想到的结果(第二个图像带有深橄榄色多边形)。看起来像是多边形生成器连接了错误图层的相交点,并创建了完全不同的多边形集,而忽略了简化线。 有人可以解释这里出了什么问题吗? 为什么红色简化线没有正确转换为简化多边形? 如您所见,我不是GIS专家,但需要自己进行此操作。我不知道我是否离解决方案太远,但是令人沮丧的是,我看到我认为可以接受但无法将其转换为多边形的简化线。 这是两个图像,显示该过程的最后两个步骤的结果:
10 qgis 

2
ArcGIS ModelBuilder可以打开Excel文件进​​行手动编辑,然后将这些编辑反馈回模型吗?
我的任务是使用ArcGIS ModelBuilder创建一个模型,该模型最初运行几个地理处理任务,然后再将Excel表连接到这些地理处理的结果。但是,模型需要首先实际打开Excel文件,以便用户手动编辑它,然后用户保存其编辑并关闭文件。然后,在模型继续执行许多其他地理处理任务之前,期望模型将这个Excel文件连接到数据集的属性表(模型的一部分)。 我在下面提供了一个高级示意图,以帮助说明这一点(我理解,开始时可能没有多大意义)。 因此,该模型将运行,完成一些地理处理任务,暂停以打开Excel文件,等待用户对其进行编辑,保存并关闭它,然后再继续将该Excel文件加入属性表,然后运行一个数字。其他地理处理任务。 我应该想象这将需要将一个或两个Python脚本合并到模型中。目前,尽管我只是想知道这个概念是否确实可行。

3
QGIS中用于航拍照片的格式和设置是什么?
以下问题是有关使用ArcGIS处理天线的更多问题: 管理航空摄影仅查看的最有效格式 似乎有2个主要选项用于存储/重新采样/重新投影等天线: JP2000 / JP2 / JPEG 2000(最近有5个用于GDAL处理的代码) ECW(ERDAS压缩小波(.ecw)) 还有其他我想念的吗? 我了解的取决于QGIS版本,通常都必须安装一些其他库。ECW有一些限制-为了压缩购买许可证的需求? 我测试了jpeg,该文件不能用于大文件(最大尺寸限制),并且在使用较大尺寸时也很慢。 答案应包含: QGIS 2.0.1桌面和/或OSGEO默认情况下有哪些功能? 大文件如何工作-放大/缩小(金字塔)? 为创建选项 - 决议案为JP2金字塔?

3
使用开源GIS软件进行3D可视化
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 6年前关闭。 我正在寻找可以分析XYZ数据的QGIS(或其他开源GIS软件)工具。 另外,我也很想知道是否有人迁移到有关地质3D分析的非商业软件,因此您的经验是什么?

2
从模板以编程方式加载composer并使用PyQGIS生成图集
我正在尝试构建一个插件来从文件加载打印作曲家,生成图集并导出到图像。到目前为止,我已经成功加载了模板并将其导出到图像。 我无法将图例中的任何图层(也在目录中)添加到导出的地图中,这将导致生成空白地图,并且所有字段表达式均不起作用。 # Get layers in the legend and append, must be a cleaner way to do this? layers = self.iface.legendInterface().layers() layerStringList = [] for layer in layers: layerID = layer.id() layerStringList.append(layerID) # Add layer to map render myMapRenderer = QgsMapRenderer() myMapRenderer.setLayerSet(layerStringList) myMapRenderer.setProjectionsEnabled(False) # Load template myComposition = QgsComposition(myMapRenderer) myFile …

1
在QGIS处理/ SEXTANTE中使用内存矢量层
我正在尝试qgis:clip从控制台运行算法,但是在使用内存层作为overlay参数时遇到错误。这是意料之中的,还是我做错了什么? 码: mem_layer = QgsVectorLayer("Polygon?crs=epsg:4326", "temp_layer", "memory") if not mem_layer.isValid(): raise Exception("Failed to create memory layer") mem_layer_provider = mem_layer.dataProvider() clip_polygon = QgsFeature() clip_polygon.setGeometry(QgsGeometry.fromRect( QgsRectangle( self.output_layer.extent().xMinimum() + 10, self.output_layer.extent().yMinimum() + 10, self.output_layer.extent().xMaximum() - 10, self.output_layer.extent().yMaximum() - 10 ) )) mem_layer_provider.addFeatures([clip_polygon]) mem_layer.updateExtents() output = self.output_layer_path + "2" processing.runalg("qgis:clip", layer, mem_layer, output) # …

4
关于SQL Server性能的ArcGIS 10.2查询层
我在ArcMap中的SQL Server上使用查询层。查询层可在SQL Server中立即执行,但在ArcMap中绘制需要花费很长时间,以至于系统在大约10分钟或更长时间内无响应。在ArcMap绘制期间,SQL Server进程中的CPU之一已用尽。 我的查询是线要素(Shannon)上与多边形要素类(Townlands)相对的缓冲区的STIntersects;如下所示; SELECT TOWNLANDS.TL_ID,TOWNLANDS.Shape FROM dbo.TOWNLANDS as townlands with(index(FDO_Shape)) JOIN dbo.Shannon on townlands.Shape.STIntersects (Shannon.Shape.STBuffer(2.0))=1 查询立即返回186行。可以在“ SQL Server Management Studio空间”窗格中绘制它们,而不会出现问题 当我使用完全相同的语法在ArcMap中构建查询图层时,系统变得无响应,但最终会绘制。似乎ArcMap似乎未使用空间索引,或者这样做与SQL Server有所不同,这导致SQL Server上的查询效率低下,并且需要一定的时间才能返回。 谁能建议补救措施? 谢谢 ArcGIS Desktop: 10.2 ArcSDE: 10.2 RDBMS: Database and version: SQL Server 2008 OS: Windows Server

2
在ArcMap的Python窗口中执行脚本?
我一直在用文本编辑器编写Python,所以我有一个Python脚本script.py。我仍在开发它,所以还不想将其放入工具箱中,目前这意味着将其从文本编辑器复制并粘贴到ArcGIS Desktop中的Python窗口中。 有没有可以从ArcGIS Python窗口调用它的命令? 类似于以下内容: run script.py 它应该存在似乎是合乎逻辑的,但也许不存在。

2
访问Geometry()对象的'length'属性时如何指定度量单位?
使用CalculateField_management工具,可以在计算形状长度时指定度量单位: #Calculate polyline lengths in miles polylines = "C:\sampleShape.shp" arcpy.CalculateField_management(polylines, "shapeLen", "!Shape.length@MILES!", "PYTHON_9.3") 我想使用每个功能的'SHAPE @ LENGTH'在光标内执行相同的操作,并以我选择的单位返回长度: #hypothetical example 1 with arcpy.da.UpdateCursor(polylines, field_names=["SHAPE@LENGTH.FEET", "shapeLen"]) as upCurs: for row in upCurs: row[1] = row[0] upCurs.updateRow(row) 还是可以使用(效率较低的)@SHAPE几何对象? #hypothetical example 2 with arcpy.da.UpdateCursor(polylines, field_names=["@SHAPE", "shapeLen"]) as upCurs: for row in upCurs: row[1] = row[0].length@FEET …



1
如何在ArcGIS for Desktop的字段计算器中执行If语句?
我有一个shapefile,其中包含两个数字字段(“ Dist_1”和“ Dist_2”)。我想要一个字段计算,它将使用三个答案之一填充另一个字段(“结果”): 首先,如果Dist_1大于Dist_2,则以'True'填充结果;第二,如果Dist_1小于Dist_2,则以'False'填充结果;如果Dist_1和Dist_2相等,则以'Equal'填充第三。

3
使用QGIS从两层之一中删除重叠的面要素吗?
我有两个重叠的多边形层,我需要以某种方式擦除重叠区域。-这样,我应该以两层不重叠的多边形结束。听起来很简单,但是我无法使用Qgis中的任何工具正确完成!!我应该使用“剪辑”或“多边形切割形状”,还是“差异”工具和“剪辑”? 无论我做什么产品都是不对的。

1
有没有办法在TOC中显示图层要素计数?
我正在使用ArcGIS10。在ArcMap的目录(TOC)中,是否可以让“图层名称”自动显示每个图层中要素总数的计数? 我以为TOC看起来像这样: 道路(27) 溪流(100) 包裹(12) 我为“唯一值”渲染器找到了此选项,但是: 我不是ArcObjects的人,并且 我只想使用单一值渲染器。 “按选择列出”选项卡具有此功能,但仅当存在选定功能时。

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.