Questions tagged «python»

Python是许多GIS程序中使用的一种开源解释型编程语言。

3
使用ArcGIS for Desktop在字段中查找重复记录?
我正在基于称为“ ID”的属性在dbf文件中寻找重复记录。我有各种dbf文件,从500,000条记录到150万条记录,我知道有很多重复项。 我想添加一个ID为“是”或“否”(或1或0很好)的字段“ Duplicate”,当ID属性存在于其他位置时。在字段计算器中使用以下python脚本,对于重复项返回1,对于唯一项返回0; uniqueList = [] def isDuplicate(inValue): if inValue in uniqueList: return 1 else: uniqueList.append(inValue) return 0 isDuplicate(!FIELD_NAME!) 但是,第一个记录(例如5个重复ID)也将返回为0(随后的4个被视为重复)。我需要将所有5个标记为重复,因为该ID在其他位置存在。 使用以下代码将为您提供ID出现次数的递增计数,其中1表示第一次出现,以此类推; UniqueDict = {} def isDuplicateIndex(inValue): UniqueDict.setdefault(inValue,0) UniqueDict[inValue] += 1 return UniqueDict[inValue] isDuplicateIndex( !YOUR_FIELD! ) 如果该记录的ID在其他地方存在,我只想要1(或是)!(ArcGIS版本10.1) 我看到了其他答案,例如用于识别重复记录的Python脚本(跟进),但效果不佳。

1
如何反转多边形中的顶点顺序?
我正在使用QGIS中的Oracle空间连接来访问和编辑矢量层。我发现编辑几何图形时,顶点顺序相反(外圈中为顺时针方向),然后在oracle中将其标记为错误。 我在自己的编辑工具中使用了合并功能(http://www.qgis.org/api/classQgsGeometry.html),但我注意到这种情况也发生在本机合并多边形工具中。 我觉得这REO排序顺时针是基于此链接在QGIS默认:https://hub.qgis.org/issues/6283,想知道是否有一种方法把它扭转逆时针?(最好是python)


3
OpenLayers插件QGIS 2的Python错误
我已经使用QGIS一段时间了,但是自从使用QGIS 2以来,OpenLayers插件在我的家用PC上不起作用。但是,我已经在工作场所成功安装了相同版本。我浏览了其他帖子,并尝试设置CRS并允许即时运行,但这对我不起作用。 谁能提供其他指导? 我也尝试过卸载/重新安装。 错误代码如下: 执行Python代码时发生错误: 追溯(最近一次通话最近):在addLayer自身中,文件“ C:\ Users \ Lee / .qgis2 / python / plugins \ openlayers_plugin \ openlayers_plugin.py”,第48行。plugin.addLayer(self)文件“ C:\ Users \ Lee / .qgis2 / python / plugins \ openlayers_plugin \ openlayers_plugin.py”,行194,位于addLayer层= OpenlayersLayer(self.iface,self .__ coordRSGoogle,self.olLayerTypeRegistry) __init self.page = OLWebPage()中的文件“ C:\ Users \ Lee / .qgis2 / python …


2
接驳巴士服务
首先,有一点背景。 我在区域运输机构工作。我们正在对馈线巴士服务进行“诊断”。我们想知道有多少比例的用户可以乘公共汽车去火车站而不是开车。这已经完成了几次,但是现在我们使用gtfs作为主要数据源,因此我们必须重新考虑我们的方法。 要被视为“为火车供餐”,公共汽车路线必须在距火车站一定距离内的车站(红色缓冲区)停靠。同样,与火车服务的同步性也很重要,因为如果您的巴士在火车前半小时到达火车站,那么等待时间就太长了,您将需要早上多睡20分钟才能开车。 假设您在12号车站乘A线(蓝色),然后在13号车站下车。公交车到达13号车站,这是火车前5分钟到达1号火车站的车站。这是非常好的。这意味着每个在1到13站内乘坐该公交车的人都将在火车开行前5分钟到达。 然后,火车经过人口稠密的地区,那里有很多学校和人行横道,被迫大幅度降低其速度。同时,公交车在14至17号车站接载乘客,并在火车开行前10分钟到达2号火车站。因此,一旦到达火车站,在14至17号车站乘坐公共汽车的乘客将都有10分钟的等待时间。因此,沿着那条公交线路,在1至13号车站乘坐巴士的乘客的等待时间为5分钟,而在14至17号车站乘坐巴士的乘客的等待时间为10分钟。 B线在轨道的另一侧,经过1号火车站附近,但其车站距离太远,无法考虑“为1号火车站供餐”。它在火车出发前7分钟到达2号火车站(在高峰期,每趟火车都要这样做;它的同步性很好)。因此,沿着B线的乘客从1号车站到59号车站到处都有巴士,等待时间为7分钟。 现在,我的问题。一旦我确定LineA.13和LineA.17停靠站正在为我的火车供电(这是在PostGIS中在空间上完成的),并且在#13之前停靠的公交车的等待时间是5分钟,但之后的等待时间是等待时间为10分钟,我该如何为所有停靠站分配等待时间? 我想在Postgres / PostGIS(pl / pgsql或pl / python)中做到这一点,但是我也可以使用纯python(OS或arcpy)。 我认为我可以向后循环。因此,一旦我找到合适的停靠点(在这里为LineA.17),就将相同的等待时间分配给停靠点16,然后是15 ...直到找到另一个适合我的条件的停靠点(LineA.13),然后分配其余的停靠点的等待时间与13。 我不知道如何创建这样的循环。我不认为我可以用SQL做到这一点,所以我不得不在PostgreSQL中使用过程语言。 我有一个使用pgRouting来找到每个供料器停靠点之间的路线的想法,这样一来,线A就会一分为二(停靠点1至13,然后停靠13至17)。这样会更容易吗? 下一步,将使用pgRouting从所有有等待时间的站点(抱歉LineA.18及以上!)计算出行驶时间,并将其与公交车的时间表进行比较以计算竞争力(是否需要5在公交车上比在车上多几分钟? 有任何想法吗?我通常会发布一个冗长的正在进行中的脚本,以显示到目前为止我所做的努力,但是我被困住了!

1
带有GDAL和PostGIS的Python替代了ArcGIS
几次前,我处理了阿拉斯加大小的每日地面温度卫星图像。 我必须处理大约一千张图像。我下载了它们,进行镶嵌,投影,修剪到shapefile边界,从修剪的栅格中提取均值,然后在时间-温度图上绘制均值。时间-温度图是最终输出。我在ArcGIS中完成了所有这些工作,即使我创建了有助于自动完成一部分工作的ArcPy脚本,也仍然很艰辛。 现在,我想构建一个执行相同操作但自动100%完成的程序。我只想将拐角的坐标输入到程序中,以便定义感兴趣的区域并获得生成的最终输出,即时间-温度图。 您认为使用Python与GDAL库和PostGIS作为栅格数据存储库是否可行?

3
尽管安装了gdal却没有ogr模块?
我正在尝试使用精彩的PySAL软件包的映射组件,但是由于某些原因,我没有ogr模块。我觉得它与gdal包装在一起。我想念什么吗? import gdal import ogr --------------------------------------------------------------------------- ImportError Traceback (most recent call last) <ipython-input-29-ef9eb3418665> in <module>() ----> 1 import gdal 2 import ogr ImportError: No module named gdal 更新: 恐怕我急着赶飞机,所以我没有提供一些关键信息。我已经使用这里描述的apt-get方法安装了python-gdal ,因为我希望没有机会。程序包管理器是否可能没有正确安装? choct155@choct155-Q550LF:~$ sudo apt-get install python-gdal Reading package lists... Done Building dependency tree Reading state information... Done python-gdal is already the …
9 python  gdal  ogr 

3
如何在独立脚本中使用Map Composer?
我正在尝试遵循pyqgis食谱中的地图渲染部分,但是我想将其作为独立的应用程序进行测试。我可以使用简单的渲染来完成第一部分,但使用地图编辑器作为独立脚本来完成第二个示例时,我会有些卡住。 这是我可以做的一个独立示例: from qgis.core import * from qgis.gui import * from PyQt4.QtCore import * from PyQt4.QtGui import * from PyQt4.QtXml import * QgsApplication.setPrefixPath("/usr/", True) QgsApplication.initQgis() fh = open("eg.csv","w") fh.write(""" x,y,name 153.0278, -27.4679, Brisbane 144.2500, -23.4500, Longreach 145.7753, -16.9256, Cairns """) fh.close() uri = "eg.csv?delimiter=%s&xField=%s&yField=%s" % (",", "x", "y") layer = …
9 qgis  python  pyqgis 

3
将shapefile转换为SVG并保留内部数据?
我对GIS非常陌生。我找到了有关如何使用Python工具制作合奏的教程。我想遵循它,但是使用我自己的数据和地图。但是,本教程使用了美国地图SVG文件,我需要使用CA邮政编码地图。我在美国人口普查的shapefile中找到的唯一地图。我尝试使用kartograph.py将其转换为SVG,但是这样做时,它会丢失文件中的邮政编码。如何将文件转换为SVG,并保持每个路径的ID为适当的邮政编码。 我正在尝试遵循“ 如何使用免费工具制作美国县专题地图”教程。只有我没有SVG格式的地图,这应该可以使您了解我要做什么。 我看过对javascript实用程序的引用。我从未使用过Javascript,但想想我可以使用简单的东西。

6
如何以编程方式检查形状的数量=表记录的数量?
我有大约1000个shapefile已损坏(请参阅附件的错误消息)。shapefile是从eCognition Developer 8生成的。有一个脚本工具似乎可以在将shapefile识别为损坏后对其进行修复。 编辑: 我想创建一个快速脚本来遍历我所有的shapefile,并检查形状的数量是否与表记录匹配。我可以使用以下方法对表记录进行计数: # Name: fcCount.py # Purpose: calculate the number of features in a featureclass # Import system modules import arcpy from arcpy import env env.workspace = "C:/data" Sample = "MyShp.shp" result_dbf = int(arcpy.GetCount_management(Sample).getOutput(0)) print result_dbf 我最终想创建某种逻辑检查,例如: if result_dbf = result_shp: pass else: print "There is a …


1
通过Python插件在QGIS中编辑属性的速度
我正在尝试使用QGIS Python插件编辑图层中每个要素的属性值。我发现在编辑模式之外执行此操作比在编辑时(甚至包括提交编辑)要慢得多。请参见下面的代码(在循环的同一点可互换的行)。我的样本数据集的速度差异为2秒(编辑模式)与72秒(非编辑模式)。 在编辑模式下修改属性: layer.changeAttributeValue(feature.id(), 17, QtCore.QVariant(value)) 在编辑模式之外修改属性: layer.dataProvider().changeAttributeValues({ feature.id() : { 17 : QtCore.QVariant(value) } }) 这是预期的行为吗?我不需要用户能够撤消更改,所以我认为我不需要使用编辑模式。 编辑1:请参阅下面的完整代码,包括两个版本(但已注释掉): def run(self): try: # create spatial index of buffered layer index = QgsSpatialIndex() self.layer_buffered.select() for feature in self.layer_buffered: index.insertFeature(feature) # enable editing #was_editing = self.layer_target.isEditable() #if was_editing is False: # self.layer_target.startEditing() # …
9 qgis  python  pyqgis 


4
用Python创建方格多边形shapefile?
我有以下坐标 minx, maxx, miny ,maxy = 448262.080078, 450360.750122, 6262492.020081, 6262938.950073 我希望使用python创建一个大小为1 m的正方形网格。 import math minx,maxx,miny,maxy = 448262.080078, 450360.750122, 6262492.020081, 6262938.950073 size = 1 def set_bbox(minx, maxx, miny, maxy, distx, disty): nx = int(math.ceil(abs(maxx - minx)/distx)) ny = int(math.ceil(abs(maxy - miny)/disty)) new_maxx = minx + (nx*distx) new_miny = maxy - (ny*disty) …

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.