Questions tagged «python»

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

2
使用GDAL用Python重新投影WGS 1984 Web Mercator(EPSG:3857)
我正在使用GDAL在python中重新投影栅格。我需要将多个tiff从地理WGS 84坐标投影到WGS 1984 Web Mercator(辅助领域),以便以后在Openlayers中与OpenStreetMap以及Google地图一起使用。我从这里开始使用Python 2.7.5和GDAL 1.10.1 ,并从这里开始使用建议转换坐标(我的代码在下面)。简而言之,我导入了osgeo.osr并使用了ImportFromEPSG (code)和CoordinateTransformation(from,to)。 我首先尝试EPSG(32629),这是UTM区29和得到这个投影光栅(或多或少罚款),所以代码似乎是正确的: 然后我用EPSG(3857) ,因为我读过这个和这个问题,并发现这是正确的最近有效密码。但是创建的栅格完全没有空间参考。它在WGS 84数据帧中距离很远(但是如果我将数据帧切换到Web Mercator,就可以了)。 使用EPSG(900913),输出已进行地理参考,但向北移动了约3个栅格像元: 当我使用ArcGIS重新投影栅格时(在WGS_1984_Web_Mercator_Auxiliary_Sphere中导出),结果几乎是正确的: 当我使用旧代码102113(41001,54004)时,结果是完美的: 使用所有代码的测试摘要: 3857: far away up (missing georeference) 3785: far away up (like 3857) 3587: far away right 900913: slightly jumped up 102100: python error 102113: perfect 41001: perfect 54004: perfect ArcGIS (web merc. …


3
将GeoPandas数据框添加到PostGIS表中?
我有一个简单的GeoPandas数据框: 我想将此GeoDataframe上传到PostGIS表。我已经具有PostGIS扩展的数据库设置,但是似乎无法将此数据框添加为表格。 我尝试了以下方法: engine = <> meta = MetaData(engine) eld_test = Table('eld_test', meta, Column('id', Integer, primary_key=True), Column('key_comb_drvr', Text), Column('geometry', Geometry('Point', srid=4326))) eld_test.create(engine) conn = engine.connect() conn.execute(eld_test.insert(), df.to_dict('records'))

3
极地立体影像的地理转换?
我目前正在将CANGRID气候数据(以Surfer Grid ascii,“。grd”文件提供)导入ArcGIS。网格大小为95行乘125列。元数据提供原始纬度/经度(左下角),像元大小(50公里)以及以中央子午线(纬度110度)和纬度纬度(北纬60度)的极地立体图形式进行的注释投影。 首次尝试将.grd转换为.ascii和.flt栅格失败后,我设法使用GDAL设置范围和投影,但是数据集未正确与目标区域的边界对齐。见下图。 是否存在公认的极地立体地理变换,可以解释这种缺乏对齐的情况? 例如,是否应该使用特定的转换因子或轮换? 数据集中的示例文件在此处:“ t201113.grd” 这是我目前在GDAL中使用的代码 ds = gdal.Open("t201113.grd") array = ds.ReadAsArray() x_rotation = 0 y_rotation = 0 xres = 1 yres = -1 llx = -129.8530 lly = 40.0451 ulx = -175.144 uly = 71.385 input_osr = osr.SpatialReference() input_osr.ImportFromWkt(ds.GetProjection()) wgs84_osr = osr.SpatialReference() wgs84_osr.ImportFromEPSG(4326) wgs_to_nps_trans = osr.CoordinateTransformation(wgs84_osr, …


1
如何利用NumPy数组优化大数据地理处理?
我对学习如何利用NumPy数组优化地理处理感兴趣。我的大部分工作都涉及“大数据”,其中地理处理通常需要几天的时间才能完成某些任务。不用说,我对优化这些例程非常感兴趣。ArcGIS 10.1具有许多可通过arcpy访问的NumPy函数,包括: NumPyArrayToFeatureClass(arcpy.da) RasterToNumPyArray(arcpy) TableToNumPyArray(arcpy.da) 出于示例目的,假设我想利用NumPy数组优化以下处理密集型工作流程: 这里的总体思想是,有大量的基于矢量的点在矢量和基于栅格的操作中移动,从而生成二进制整数栅格数据集。 如何合并NumPy数组以优化此类工作流程?

3
使用Python生成GeoJSON
我想以编程方式使用shapefile中的多边形创建GeoJSON文件,但要从我自己的应用程序中添加属性。 对于shapefile来说,这很容易做到: def create_data_dayer(self,varlist, data): """ Creates a new shape to contain data about nodes. varlist is the list of fields names associated with the nodes. data is a list of lists whose first element is the geocode and the remaining elements are values of the fields, in the same …
16 python  geojson  ogr  fiona 

4
删除SHP功能的Python模块(未安装Desktop GIS)
我有一个在非生产计算机上每晚运行的软件(非Arc),该计算机从外部数据库更新shapefile功能。我想定期删除shapefile中的所有功能(而不是文件本身,必须保留),然后让软件从头开始“重建” shapefile。我想使这个过程自动化。 该机器上目前没有安装任何GIS软件。我希望我可以用Python编写一个例程来自动删除要素,就像Arc的Delete Features地理处理工具一样。 有没有允许我执行此操作的Python模块?最好是开源的?我查看了Shapely和PyShp,但没有发现任何可让我删除大量功能或与WHERE子句匹配的功能。他们可以编写功能并对其进行分析,但是在任何地方都没有看到DELETE FEATURES功能。 我肯定一定会错过一些简单的东西... 编辑:我有35个文件夹(不同的地理范围,全部在各自的投影中),带有35-65个shapefile,可处理约1000个shapefile。

5
如何以编程方式获取ArcMap使用的“ Python.exe”的路径
我正在使用C#中的ArcMap加载项。从C#代码中,我已经执行了一些Python脚本。现在,要运行这些脚本,我已对python路径进行了硬编码。但这不是便携式的。因此,我想从代码中获取Python可执行文件的路径并使用它。 题: 如何从C#代码获取ArcMap使用的Python可执行文件的路径? 编辑: 根据您的建议,现在我正在使用“路径环境”来获取Python路径。 //get python path from environtment variable string GetPythonPath() { IDictionary environmentVariables = Environment.GetEnvironmentVariables(); string pathVariable = environmentVariables["Path"] as string; if (pathVariable != null) { string[] allPaths = pathVariable.Split(';'); foreach (var path in allPaths) { string pythonPathFromEnv = path + "\\python.exe"; if (File.Exists(pythonPathFromEnv)) return pythonPathFromEnv; } …
16 arcgis-10.0  python  c# 

8
如何使用Python获取栅格中每个像素的XY坐标和像元值?
我是Python的新手,我想知道是否存在一种快速方法来在ArcGIS 10中使用Python逐个像素获取栅格像元值以及坐标(每个像素中心的地图XY坐标)? 为了进一步描述这一点,我需要获取第一个像素的地图X,地图Y和像元值,并将这三个值分配给三个变量,并对其余的其他像素重复此步骤(遍历整个栅格)。 我想我需要更多地描述我的问题。问题是,我需要获取第一个栅格的像素的XY位置,并获取与该XY位置相对应的其他几个栅格的像元值。此过程应遍历第一个栅格的每个像素,而无需创建任何中间点shapefile,因为这将真的非常耗时,因为我必须处理具有近80亿像素的栅格。另外,我需要在ArcGIS 10中使用Python进行此操作。 @JamesS:非常感谢您的建议。是的,这将适用于一个栅格,但是我还需要收集其他几个栅格的像元值。问题是,在获取第一栅格的第一个像素的X和Y坐标之后,我需要获取第二栅格的像元值,该值对应于第一栅格的X,Y位置,然后是第三栅格,依此类推。因此,我认为在遍历第一个栅格时,应该同时完成像素的X和Y位置以及与该位置相对应的其他栅格的像元值的获取,但我不确定。这可以通过将第一个栅格转换为点shapefile并在ArcGIS 10中执行将多值提取为点功能来完成,但是我 @hmfly:谢谢,是的,如果我可以获取数组的已知行和列值的坐标,则此方法(RastertoNumpyarray)将起作用。 @whuber:我不想执行任何计算,我要做的就是将XY坐标和单元格值写入文本文件,仅此而已

2
使用GDAL和Python将投影的geoTiff转换为WGS84
如果以下问题有些愚蠢,我深表歉意,但是我对这整个GIS只是非常陌生。 我正在尝试使用python中的gdal将一些投影的geoTiff图像转换为WGS84。我发现了一篇帖子,概述了使用类似于以下内容的方法在投影的GeoTiff中转换点的过程: from osgeo import osr, gdal # get the existing coordinate system ds = gdal.Open('path/to/file') old_cs= osr.SpatialReference() old_cs.ImportFromWkt(ds.GetProjectionRef()) # create the new coordinate system wgs84_wkt = """ GEOGCS["WGS 84", DATUM["WGS_1984", SPHEROID["WGS 84",6378137,298.257223563, AUTHORITY["EPSG","7030"]], AUTHORITY["EPSG","6326"]], PRIMEM["Greenwich",0, AUTHORITY["EPSG","8901"]], UNIT["degree",0.01745329251994328, AUTHORITY["EPSG","9122"]], AUTHORITY["EPSG","4326"]]""" new_cs = osr.SpatialReference() new_cs .ImportFromWkt(wgs84_wkt) # create a transform object …

5
Vincenty和大圆距离计算之间的区别?
Python的geopy软件包具有两种距离测量技术:Great Circle和Vincenty的公式。 >>> from geopy.distance import great_circle >>> from geopy.distance import vincenty >>> p1 = (31.8300167,35.0662833) # (lat, lon) - https://goo.gl/maps/TQwDd >>> p2 = (31.8300000,35.0708167) # (lat, lon) - https://goo.gl/maps/lHrrg >>> vincenty(p1, p2).meters 429.16765838976664 >>> great_circle(p3, p4).meters 428.4088367903001 有什么区别?首选哪种距离测量?

2
使用geopandas获取多边形区域?
给定一个geopandas GeoDataFrame包含一系列多边形的区域,我想获取列表中每个要素的面积(平方公里)。 这是一个很常见的问题,并且在过去通常建议的解决方案是使用shapely和pyproj直接(如这里和这里)。 有没有办法做到这一点geopandas?

1
如何查看更新的Shapefile中的哪些行已更改?
我正在使用县的GIS数据更新OpenStreetMap中的道路。我有一个它们去年发布的副本,一个刚刚发布的副本,我想找到所有属性或几何形状发生变化的LineString。这将帮助我确保在OpenStreetMap中更新所有新的和经过修改的街道。 我想使用FOSS软件(例如QGIS或Python / OGR)进行此操作。街道路段应具有唯一的标识符,因此,我唯一的想法是编写一个Python脚本,该脚本可同时打开Shapefile,查找新区中不存在的任何路段(添加的路段)和反向路段(已删除的路段) ,然后循环比较匹配的对,比较它们的组成坐标以查看是否有任何变化。 这是一个好方法吗?有没有更简单的方法?

4
使用GDAL平滑/重新插值栅格吗?
简短: 我想更改光栅的分辨率并平滑灰色渐变,如下面的图像所示。首选项是使用GDAL,PIL或Numpy。 说明: 我正在使用High Performance Geostatistical Library将该点克里格化为输出分辨率为20米的栅格。我不想更改输出分辨率,因为插值时间呈指数增长。 在这种分辨率下,输出图像很难看(像素化和混叠)。我不知道它在概念上是否正确,但是我希望图像像下面的示例一样更平滑。就像将图像“重新插值”为分辨率更高的图像一样。我正在使用python,因此我的偏好设置是GDAL,Python Imaging Library或Numpy。答案可能是理论上的,例如指出算法名称或这种操作的概念。 资源: 目的地: 使用gdalwarp三次样条的编辑结果:
15 python  raster  gdal 

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.