地理信息系统

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

1
在执行ArcGIS Python脚本工具期间是否提示用户输入?
在为脚本工具指定了所有参数之后,我想提示用户输入。我已经看到很多论坛帖子和关于此的stackexchange问​​题,他们都认为这是不必要的,但是我认为我的情况是个例外。我想让用户有机会确认数据,例如有多少组GPS坐标。它们将是是/否的问题(“此数据是否明显不正确?”),脚本工具参数输入表单似乎不适用于此情况。 我知道Tkinter的事件处理程序会导致ArcGIS问题,而其他framworks也有类似的问题。我发现的一种解决方法是让您的脚本调用另一个作为独立进程运行的脚本,并显示来自第二个进程的GUI,但这似乎有点过于骇人听闻了。 显然wxPython 确实可以工作,但是python不包含它。我需要能够分发这些脚本而没有ArcGIS以外的任何其他要求,因此这对我不起作用。 为了澄清,最重要的用途是在我的软件验证检查无法验证数据时提示用户。例如,我有一个要验证的ID列表,但格式不一致。如果我无法在软件中进行验证(例如,ID与常见模式之一不符),我希望能够用是/否对话框提示用户。在我不知情的情况下,可能会创建新的ID格式。 另一个示例:我有一个文件,其中除其他外,其中包含开始和停止时间的表。我想分别验证表的每一行,并将所有这些数据以及其他检查填充到警告窗口中会很快变得难看。

3
如何使用GDAL为光栅带添加颜色解释?
我有3个单独的1频段GeoTIFF文件。带的颜色解释为灰色。我想要一个3波段RGB文件。我用过gdal_merge.py gdal_merge.py -separate file1.tif file2.tif file3.tif -o output_file.tif 但是,结果output_file.tif的3个波段的颜色解释为灰色,未定义,未定义。除此之外,所有像素均为0。 如果执行pct2rgb.py,我将得到一个RGB文件: pct2rgb.py output_file.tif output_file_rgb.tif 但当然,像素也为0。因此,我有3个问题: gdal_merge.py是将3个1波段文件合并为一个3波段RGB文件的正确工具吗? 为什么我得到乐队未定义的颜色解释? pct2rgb是将具有这种颜色解释的3波段文件转换为RGB文件的正确工具吗? 更新:栅格没有颜色表。只是颜色解释:灰色。 另一方面,像素值从0到1023(这是有意的) 更多数据:它们是旋转的栅格(不向北),但是它们都具有相同的地理变换。 更新2:我可以扭曲图像以使其朝北,构造一个VRT并为每个波段添加ColorInterp,但是在输出结果中我仍然得到颜色解释为灰色,未定义和未定义。 问题是我至少需要在第一个波段中创建一个颜色表。我知道创建它们的方法,但是我不知道我的表应该有多少个条目。为什么在GDAL Raster FAQ示例中有13个条目?如果有帮助,所有像素的值都在0到1023之间。 更新3:显然,TIFF格式无法真正指定每个频段的颜色解释。读取TIFF文件时,GDAL构建颜色解释的方式是PHOTOMETRIC和EXTRASAMPLES标记的值的组合。 阅读这些标签: PHOTOMETRIC表示图像数据的色彩空间。值2表示像素值的组成部分是RGB,但是它假定为Byte像素,并且我有UInt16像素(我尝试过-co "PHOTOMETRIC=rgb",并遇到错误)。因此,我无法为输出文件指定PHOTOMETRIC标签。 EXTRASAMPLES指定每个像素具有N个额外的分量。我不确定如何使用此标记创建合并的文件。或者,如果我需要它。 因此,在更新2中,我建议创建一个ColorTable,但是如何呢?在我的3个输入文件中,像素值从0到1023。是否必须将它们与颜色匹配?我必须创建一个具有1024个输入的ColorTable吗?怎么样? 在更新3中,似乎在创建合并文件时可以使用一些GeoTIFF标签,但是我不确定是否真的可以使用它们,或者如何使用。



3
python.exe已停止工作
大约18个月前,一个已经离开的人写了一个python脚本。然后产生了所需的输出。我被要求再次运行它,但是使用不同的(更高分辨率)数据输入。输入数据集已分为20个子集,每个子​​集约有2700个数据点。但是,在处理了大约300个数据点(范围从295到306,并且并不总是在同一条记录上失败)之后,脚本崩溃(“ python.exe已停止工作”)。 由于脚本年代久远,它是使用arcgisscripting而不是arcpy编写的。广泛地,它使用游标执行以下操作: 对于给定的点,以60分钟的旅行时间作为起点计算成本距离(使用gp.CostDistance_sa)。 调用gp.ExtractValuesToPoints_sa提取每个数据点上的所有单个值,并将要素类输出到文件地理数据库。 读取上面b)中创建的要素类,然后将值写入CSV文件(忽略带有“无数据”的任何点(值-9999))。 对输入文件中的所有剩余数据点重复1、2和3。 处理时间约为 每个数据点平均1分钟。以下是一些相关的技术规格: 该PC具有运行于2.20GHz的四核Intel i7-2720QM CPU和运行Windows 7(64位)的8GB RAM。 Python版本为2.6.6(shell在win32上还声明“ [MSC v,1500 32 bit(Intel)]”)。 还安装了ArcMap 10.0(SP4)。 我试过在另一台PC上运行它(到目前为止没有崩溃)。当前,该作业在较旧的PC上运行成功(但速度较慢),并且已达到419条记录而没有崩溃。该机器的相关规格为: 英特尔酷睿2 DUO E7500处理器,运行频率为2.93 GHz,具有4 GB RAM和64位Windows 7。 Python版本2.5.1(shell在win32上还声明了“ [[MSC v,1310 32位(Intel)]]”)。 已安装ArcMap 9.3(未提及任何Service Pack)。 有人可以提供一些有关脚本为何会工作一段时间然后崩溃的建议,以及如何解决该问题的建议吗? (到目前为止)出现了另一台PC处理该脚本的事实,这表明有些“环境”问题。 作为更新,运行ARCGIS 9.3的PC仍在成功处理数据,并且已经处理了1300个数据点(并且仍在计数)。一位同事还在运行ARCGIS 10.1的PC上运行数据-在两次分别记录267条记录后,它崩溃了。尽管不是结论性的,但通用线程似乎是Arc 9.3将处理数据,而Arc 10.x将不处理数据。

1
为什么即使我有CSVT,某些列也不能识别为数字?
我在导入.csv文件时遇到问题。 不应该将文件的某些值在文本样式进行格式化,但在数量上的风格,所以我创建了像解释额外.csvt文件在这里。 将创建两个具有完全相同名称和相同位置的文件。列数相同,我使用“添加分隔的文本层”工具添加.csv文件。但是,我无法为分级符号系统选择任何列。 我的.csv文件包含12行,其中第5、11和12列由数字组成。因此,我的.csvt文件如下所示: “ String”,“ String”,“ String”,“ String”,“ Integer”,“ String”,“ String”,“ String”,“ String”,“ String”,“ Integer”,“ Integer” 我尝试使用Windows和Notepad ++的标准编辑器创建它。新手是否会犯一些常见错误,就像我是一个错误?感谢您的帮助!
9 qgis  csv 

3
从Python控制台使用QGIS Zonal Stats插件吗?
我正在使用QGIS中的Zonal Stats插件从重叠的多边形中提取栅格统计信息(我具有物种分布的shapefile,并且我希望从每个物种的范围内提取环境数据)。我有300个左右的文件需要从中获取数据,因此想编写一个脚本在python控制台中运行,但是我是python的新手,不知道如何执行此操作。

2
如何在OpenStreetMap / PostGIS数据库中找到POI的最近城市?
我有兴趣为OSM数据库中的POI查找其他数据。 当前,我可以使用以下SQL来获取所有POI的名称+ long + lat SELECT name, x(transform(way, 4326)) AS lon, y(transform(way, 4326)) AS lat FROM planet_osm_point WHERE tourism='museum' UNION SELECT name, x(centroid(transform(way, 4326))) AS lon, y(centroid(transform(way, 4326))) AS lat FROM planet_osm_polygon WHERE tourism='museum' 我还想知道最近的城镇名称或POI所在的城镇名称。


2
如何实现二元Ripley的K函数?
随附的图像显示了一个森林间隙,赤松表示为圆圈,白松表示为十字架。我有兴趣确定两种松树之间是否存在正关联或负关联(即它们是否在同一地区生长)。我知道R spatstat套件中的Kcross和Kmulti。但是,由于我需要分析50个空白并且比R更熟悉python编程,因此我想找到一种使用ArcGIS和python的迭代方法。我也愿意接受R解决方案。 如何实现二元Ripley的K函数?

1
'#'在python'if'中的作用:
我最近将ArcGIS模型导出到python,并正在查看脚本,并被以下行感到困惑: if TRU_W_DatableFeatures == '#' or not TRU_W_DatableFeatures: “#”的作用是什么?
9 arcpy 

1
聚焦统计中邻域设置的任何经验法则?
在ArcGIS 10中,用户可以在焦点统计工具中定义邻域。可以将移动窗口的形状设置为以下任意一种:楔形,环形,圆形,矩形,不规则形和粗细。出于示例目的,假设我们要从空间分类为1 m的二进制分类冠层栅格(即0 =无冠层和1 =存在冠层)中计算平均树冠面积。给出以下示例: 是否有任何经验法则来确定应使用哪种移动窗口形状? 确定移动窗口的形状后,是否有办法定量确定最佳邻域设置,或者这完全是主观的?

1
在QGIS中进行编辑时如何将选定的多部分要素转换为单部分要素?
有关如何使用QGIS将多部分要素图层转换为单部分要素的问题和答案分别是: 如何将一个多边形分解为多个多边形? 如何在QGIS中分割非连续要素? 但是我看到的所有解决方案都将创建一个全新的层,并将所有多部分的几何图形转换为单个几何图形。 因此,问题是,在编辑会话期间,如何能够将多部分要素选择性地转换为单部分要素,而无需创建新图层? 它与“合并所选要素”工具相反,类似于ArcGIS中的爆炸。 有没有插件可以这样做?如何使用python控制台完成此操作?


6
在栅格中找到给定像素值的最小边界范围?
我想知道是否有办法找到具有特定值的栅格的最小边界范围。我从全局图像中裁剪了一个栅格,并将范围设置为具有大量NoData区域的全局范围。我想从此栅格中删除NoData区域,并仅保留包含特定值像素的区域。我怎样才能做到这一点? 这是我的示例:我想提取value = 1(蓝色区域)并使用蓝色区域的范围而不是整个世界进行进一步处理。

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.