Questions tagged «python»

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

1
如何可视化具有不确定性的方位角数据?
我正在尝试制作一个图,显示在每个点具有不同范围不确定性的方位角数据。这张来自1991年论文的老式人物捕捉了我旨在的“领结情节”构想: 关于如何制作类似数字的任何建议?我是GIS领域的新手,但是我确实可以通过我的大学使用ArcGIS。我的Arc经验仅限于制作地质图,因此我不必做任何过于奇特的事情。 我在Arc和QGIS中浏览了符号系统选项,但没有看到我认为可以完成此工作的任何设置。注意,这不仅仅是旋转方位角的蝴蝶结形状的问题;每个“领结”的角度范围需要不同。 我将我的Python技能评为“高级中级”,而将我的R技能评为“低级中级”,因此如果有必要,我不反对与matplotlib和mpl_toolkits.basemap或类似的库一起破解某些东西。但是我认为在走那条路之前,我会在这里征求建议,以防万一有一个我还没有听说过的GIS领域的简单解决方案。

4
使用python从栅格获取纬度/经度?
我想知道是否有人在不使用ArcGIS的情况下从栅格中获取高程数据,而是以python list或dict? 我以元组列表的形式获取XY数据: xy34 =[perp_obj[j].CalcPnts(float(i.dist), orientation) for j in range (len(perp_obj))] 我想遍历列表或将其传递给函数或类方法,以获取xy对的相应高度。 我对该主题进行了一些研究,gdal API听起来很有前途。谁能建议我如何处理事情,陷阱和示例代码? 不能选择GDAL,因为我无法在正在使用的计算机上编辑系统路径变量! 有人知道其他方法吗?

2
从头开始创建多光谱图像
我想从Cero制作多光谱图像以对其进行一些测试。真的很简单,例如5条完全均匀的带,上面有盐和胡椒粉的噪声,或者中心是不同值的正方形。显然,这只是一堆矩阵,一个多维数组,可以很直接地生成。我想使用python和gdal来实现这一点,但是gdal相当封闭,我根本不了解它。理想情况下,我想创建一个geotiff文件。有人可以帮我吗?一些指针或gdal教程,这是非常温柔的吗?谢谢你们。
10 python  raster  gdal  imagery 

2
如何从GeoPy地址解析器返回单个地址组成部分(城市,州等)?
我正在使用GeoPy将地址地理编码为lat,lng。我还想为每个地址提取逐项列出的地址组成部分(街道,城市,州,邮政编码)。 GeoPy返回带有地址的字符串-但我找不到分离每个组件的可靠方法。例如: {street: '123 Main Street', city: 'Los Angeles', state: 'CA', zip: 90034, country: 'USA'} Google地理编码API确实会返回这些单独的组件...有没有办法从GeoPy获取这些组件?(或其他地理编码工具?)

2
聚合多边形以满足隐私要求
我有一个点要素类,代表某个行业中所有雇主的办公室位置。要素类具有用于存储在每个办公室工作的员工人数的属性。有人要求使用此数据,并在空间上连接到最小的地理单位(在这种情况下为人口普查区块)。但是,隐私协议阻止数据按原样发布。相反,必须抑制它以满足两个条件: 任何多边形必须包含至少3个用人单位(点); 一个多边形内最多只能有80%的就业机会由单个雇主提供。 我已经成功编写了一个脚本,该脚本将这些点在空间上连接到人口普查区块,并在每个区块中保持总和和最大用工。每个不符合抑制标准的标记。(不包含点的多边形不会被标记,因为没有抑制的数据。)然后,我检查每个块组,以查看其中是否包含任何标记的块。然后,仅包含未标记的块的块组将替换为这些块。然后对照抑制标准检查结果要素类,以检查块组是否已充分抑制数据。 对Tracts重复相同的过程,剩下的数据集包括Tracts(有些被标记,有些没有标记),Block Groups和Blocks(全部未标记)。但是,地理层次结构中的下一个进展是县,这对请求此数据的人毫无用处。 那么,我的问题是:是否存在任何普遍接受的将多边形聚合到尽可能多的组中的方法,以使所有这些都满足最低要求? 以下是一些我想应用于聚合的规则: 只要有可能,已标记的道仅应与其他已标记的道合并; 对于标记的与其他不连续的领域(或仍不符合标准的孤立组),可以将它们与已经符合标准的领域结合起来,尽管之间可能存在没有雇主的领域。需要包括在内。 除非绝对不可能,否则我希望保持县域边界不变(我希望通过在处理输入要素之前将其分为各自的县来做到这一点)。 解决方案必须使用Python,并使用ArcGIS工具或开源Python库。 理想情况下,有人可以向我指出实现此聚合的现有方法。如果没有,我将很高兴自己编写算法,尽管会特别感谢一些特定步骤/工具的列表。这个问题使我感到震惊,因为它是重新划分区域(具有不连续的多边形)的一种特殊情况,为此,我研究了使用PySAL的区域化算法,尽管我不清楚如何使用这些方法来检查最大雇主在总雇员中所占的百分比。

3
'NoneType'对象没有属性
我是python地理空间编程的新手。我运行了以下脚本并得到了相应的错误消息 >>> import osgeo >>> import osgeo.ogr >>> shapefile = osgeo.ogr.Open("tl_2009_us_state.shp") >>> numLayers = shapefile.GetLayerCount() Traceback (most recent call last): File "<pyshell#5>", line 1, in <module> numLayers = shapefile.GetLayerCount() AttributeError: 'NoneType' object has no attribute 'GetLayerCount'
10 python  gdal 


2
将PostGIS表转换为Python中的Shapefile?
我想将PostGIS表转换为shapefile(不使用pgsql2shp)。 为了在shapefile中创建几何,我必须提供Xmin,Ymin和Xmax,Ymax,而我在PostGIS表中拥有的几何是不规则形状的(我可以使用边界框获得外部,但是其中包括比我最笨拙的区域多一些)。有什么方法可以完成任务? 我想以编程方式并使用Python进行操作。
10 python  postgis 

1
Python中的Arcobjects:将接口分配给具有特征(形状)几何的对象
我正在尝试在Python中使用ArcObject。我确实在使用几何数据为我的对象分配接口(即IZ.InterpolateZsBetween)时遇到问题,代码为: from Comtypes.client import CreateObject, GetModule import arcgisscripting gp = arcgisscripting.create(9.3) gp.setproduct("ArcInfo") esriSystem = GetModule("C:/Program Files (x86)/ArcGIS/com/esriSystem.olb") esriGeometry = GetModule("C:/Program Files (x86)/ArcGIS/com/esriGeometry.olb") esriDataSourcesGDB = GetModule("C:/Program Files (x86)/ArcGIS/com/esriDataSourcesGDB.olb") esriGeoDatabase = GetModule("C:/Program Files (x86)/ArcGIS/com/esriGeoDatabase.olb") sPath ="c:/temp/test.gdb" pWSF = CreateObject(esriDataSourcesGDB.FileGDBWorkspaceFactory,\ interface=esriGeoDatabase.IWorkspaceFactory) pWS = pWSF.OpenFromFile(sPath, 0) pFWS = pWS.QueryInterface(esriGeoDatabase.IFeatureWorkspace) pFClass = pFWS.OpenFeatureClass("test_z") pFCursor = …

1
有关PostGIS多边形几何的帮助-非闭合环
我已经摘录了Erik Westra(亚马逊链接)撰写的一本超级邪恶的书“ Python Geospatial Development” ,并且正在研究中。目前,它正在教我将GSHHS海岸线数据从shapefile加载到PostGIS数据库中,以准备构建地理空间Web应用程序。 我的问题是:当我尝试将GSHHS数据导入PostGIS时,由于海岸线多边形不被视为“有效”而被拒绝。具体来说,我收到一条错误消息,将某些(而非全部)海岸线多边形描述为“非封闭环”。 我知道此错误试图告诉我多边形的第一个点和最后一个点不相同。但是,这根本不是事实。我已经检查了许多多边形的WKT表示形式,它们是正确的。它们肯定以相同的坐标开始和结束。 使用OGR库从shapefile中提取多边形,并将每个多边形要素导出到WKT。我尝试通过Shapely重构多边形,并尝试使用WKB,但无济于事。我已经能够在同一数据加载到PostGIS的作为MULTIPOLYGON表,使用shp2pgsql装载机。 我想知道那里是否有人: (a)也许使用同一本书,陷入同样的​​问题,并且对我有答案? (b)遇到类似问题,并找到解决方案? (c)否,是否有一些“最佳实践”建议,以确保在装入PostGIS之前确保有效的几何图形? 更新:一位同事建议,“非闭合环”问题可能只是另一个问题的征兆。我的PostGIS / PostgreSQL配置可能有大小限制(关于插入事务,接收到的数据包,文本字符串等)。 由于我将很长的WKT多边形用作输入,因此PostGIS可能为时过早,无法允许每个多边形完成切割。我明天将对其进行测试,但听起来确实有可能。我插入的国家边界只是接受一些记录,而不接受其他记录。从内存来看,可接受的几何形状适用于像安提瓜这样的小岛国(因此可能具有较短的WKT表示形式)。 因此,这最终可能更多是PostGIS数据库管理线程,而不是无效的几何线程。
10 python  postgis  ogr  wkt 

3
使用pyproj和Proj.4将X,Y坐标转换为纬度/经度会返回错误的坐标
我正在编写一个python脚本,该脚本读取包含x和y坐标的多个XML文件,并将它们全部合并为一个csv文件。纬度和经度是csv中的必填字段,但我很难将俄亥俄州北州飞机usFt中的x,y坐标转换为WGS84。 >>> p = Proj(r'+proj=lcc +lat_1=41.7 +lat_2=40.43333333333333 +lat_0=39.66666666666666 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=us-ft +no_defs') #Nad83 State Plane Ohio North US Feet Proj object using parameters >>> p(739400.91,2339327.3,inverse=True) (-80.138057868777224, 60.278230707978487) >>> p1 = Proj(init="epsg:3734") #Nad83 State Plane Ohio North US Feet Proj object using EPSG code >>> p1(739400.91,2339327.3,inverse=True) (-80.138057868777224, 60.278230707978487) …


2
使用ogr和Python在Polygon中指向(线串)
我目前正在一个项目中,我需要根据在shapefile中找到的几何特征来构建拓扑网络。到目前为止,使用Ben Reilly的开源项目,我已经设法将线串转换为networkx边缘,并检测到封闭特征(将其他线串说成)并将其添加到最近的点,以便我可以运行最短路径算法。 但这对于一个shapefile很好。但是,我现在需要将来自不同shapefile的要素连接到一个大的networkx图形中。因此,例如,如果某个点在多边形内,则将其连接(通过连接,我的意思是添加一个networkx边-add_edge(g.GetPoint(1),g.GetPoint(2)),并在下一个shapefile中将该点也位于共享相似属性(例如ID)的多边形内,请注意,不同shps中的多边形仅共享相同的ID,而不共享坐标,而位于多边形内的点也不共享相同的坐标。 我对这个问题的解决方案是识别位于多边形中的点,将其存储,在下一个shapefile中找到具有相同ID的多边形中的点,然后在它们之间添加networkx边。 如何查找点是否位于多边形内?嗯,有一个众所周知的算法:RayCasting算法可以做到这一点。不过,这实际上是我遇到的问题,因为要实现算法,我需要多边形的坐标,而且即使浏览了OGR的Geometry 文档也不知道如何立即访问它们。因此,我要问的问题是如何访问多边形点或坐标,或者是否有更简单的方法来检测点是否落在多边形内?在osgeo.ogr库中使用python,我编写了以下代码: if g.GetGeometryType() == 3: #polygon c = g.GetDimension() x = g.GetPointCount() y = g.GetY() z = g.GetZ() 查看图片以更好地了解我的问题。 [编辑] 到目前为止,我已经尝试将所有多边形对象存储在列表中,然后再与之比较线串的第一和最后一点。但是Paolo的示例与使用“点对象”引用和“多边形对象”引用有关,这与线对象引用不兼容,因为不是整个线都在多边形内,而是其线串的第一个或最后一个点。 [EDIT3] 从线串的第一个点和最后一个点的坐标创建一个新的Geometry点对象,然后使用该对象与列表中保存的多边形几何对象进行比较似乎很好: for findex in xrange(lyr.GetFeatureCount()): f = lyr.GetFeature(findex) flddata = getfieldinfo(lyr,f,fields) g = f.geometry() if g.GetGeometryType() == 2: for j in xrange(g.GetPointCount()): if …

5
使用来自另一个dbf表的值更新一个shapefile属性表
我试图在这里解释我要做什么: 我有一个shapefile和一个具有相同字段的独立dbf表。在dbf表中填充了所有字段,但在shapefile属性表中仅填充了一个字段,将其命名为“ OneField”。我想做的是检查“ OneField”(Shapefile)中的值是否与“ OneField”(dbf表)中的值相同,如果是,则用这些填充在shapefile属性表中的其余空字段在独立的dbf表中。 目前,我只想将独立dbf表中的值复制到shapefile属性表中,但是我被卡住了。你能帮我一下吗? 这是代码: import arcpy table = "link/to/table.dbf" fc = "link/to/shapefile.shp" # Create a search cursor rowsTable = arcpy.SearchCursor(table) # Create an update cursor rowsFc = arcpy.UpdateCursor(fc) for row in rowsTable: row = row.getValue("OneField") valueTable = row for row in rowsFc: row = row.setValue("OneField", valueTable) rowsFc.updateRow(row) …
10 python  data  shapefile 

3
在ArcMap中创建按钮以运行Python程序?
单击工具栏中的按钮时,我有一个要在ArcMap中运行的脚本,到目前为止,我只能将该脚本制作为脚本工具。我需要它作为命令而不是地理处理工具运行。 与从命令行窗口执行相同的代码相比,将其作为地理处理工具运行需要更长的时间。我刚刚开始研究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.