Questions tagged «python»

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

3
使用Python中的shapefile多边形从NetCDF中提取数据[重复]
这个问题已经在这里有了答案: 如何在Python中从shapefile屏蔽NetCDF时间序列数据? (1个答案) 15天前关闭。 我需要使用特定的shapefile从NetCDF子集数据。数据是1/4度分辨率下的海面温度和海洋颜色。我有4个描述美国的多边形。东北大陆架大型海洋生态系统及其提取数据所需的子组件。我正在处理1982-2014年的每月复合文件,因此此数据提取例程需要自动化。文件已被子集为[35、45,-80,-60]的近似工作区域网格。 以前,我们将HDF5数据文件转换为R中的栅格并以这种方式进行处理,但是这种方法的效率很低,我相信使用当前NetCDF文件在Python中有更好的解决方案。 到目前为止,我一直在使用GDAL和Fiona读取shapefile,并使用NetCDF4加载数据文件。我不确定如何对数据进行子集。我找到了这个: GDAL for Python:从NetCDF文件提取子域吗? 但是我不知道如何使用除简单边界框以外的任何东西来对NetCDF文件进行子集化,这些多边形最肯定不是。 多边形例程中的点可能需要花很长时间才能工作,但是也许我可以使用较小的边界框将数据子集化,使其旋转以适合如下所示的这些形状作为初始起点,然后进行多边形点搜索: 使用lon / lat边界框对曲线netCDF文件(ROMS模型输出)进行子设置。 有任何想法吗? 编辑1: 我刚刚遇到了OpenClimateGIS软件包,它似乎很适合该法案...我将继续研究它是否可以正常工作:http: //ncpp.github.io/ocgis/examples。 html#advanced-subsetting

4
如何将qgis.core导入Python应用程序?
我是Python的新手。我想使用Windows 7 64位上的QGIS库使用Python创建GIS应用程序。 我的方式: 安装QGIS 1.7.0 我设置PYTHONPATH = D:\ Program Files(x86)\ Quantum GIS Wroclaw \ apps \ qgis \ python 我从C:\ Program Files(x86)\ Quantum GIS Wroclaw \ bin中的cmd运行python 我输入import qgis.core,出现一个带有文本的弹出窗口 该程序无法启动,因为您的计算机缺少qgis_core.dll。尝试重新安装程序以解决此问题 和cmd中的文本是 ImportError:DLL加载失败:找不到指定的模块。 谁能帮我?
11 python  qgis 



1
如何在Ubuntu OS中将Qgis与pycharm连接
我刚刚开始将pycharm与qgis结合使用,但无法同时连接它们两者。Pycharm始终处于“等待连接”状态。大多数可用的教程都指向Windows,但是我使用的是ubuntu,所以找不到在pycharm上调试qgis代码的方法。这是我的pycharm代码: from shapely.geometry import * from shapely.wkt import loads import sys import pydevd pydevd.settrace('localhost', port=53100, stdoutToServer=True, stderrToServer=True) class Loader: def __init__(self, iface): """Initialize using the qgis.utils.iface object passed from the console. """ self.iface = iface 我在pycharm中启用了断点,并在pythonpath中添加了pycharm-debug.egg,有人从ubuntu上的qgis如何配置它吗? pycharm始终位于: Starting debug server at port 53100 Use the following code to connect to …
10 qgis  python  ubuntu  pycharm 

1
使用Python从投影坐标转换​​shapefile
新手在这里苦苦于GIS。我正在尝试使用在其县网站(县)网站上找到的shapefile来为密尔瓦基市(Milwuakee)绘制地图。我在这里取得了一些成功。我的代码是给: from pyproj import Proj, transform # wisconsing EPSG:32054 # epsg:4326 is for the entire world, wgs 84...not obvious inProj = Proj(init='epsg:32054') outProj = Proj(init='epsg:4326') x1,y1 = 2560131.496875003, 406816.434375003 x2,y2 = transform(inProj,outProj,x1,y1) print(x2,y2) 与输出, -65.70220967836329 43.08590211722421 问题是这是错误的。密尔沃基的lon / lat为-87.863984和42.920816。 其次,我如何以编程方式对整个shapefile执行此操作。我想将其绘制到底图中。当我尝试遵循此线程时,出现错误代码: with fiona.open("ward2012/ward.shp") as shp: ori = Proj(init='epsg:32054' ), dest= Proj(init='EPSG:4326',preserve_units=True) …

1
QGIS Modeler if / else条件,用于Modeler的自定义脚本
我想在模型中创建一个简单的if / else函数,我想知道是否可行。 我希望这件事做到这一点,如果选择了“细分层”的输入,则它不必执行“细分(均移)”,而将“细分层”用作下一个流程的输入。 “细分(平均转换)”的输入如下 尝试实现约瑟夫的答案后进行更新:我使用以下代码,并收到此错误 更新2,替换参数后,在第28行出现错误,这是“ else:”立场 ##Example=name ##BGREN=optional raster ##Segment_Layer=optional vector ##output=output vector if BGREN is not None: processing.runalg('otb:segmentationmeanshift', \ -BGREN\ -0\ -70\ -70\ -0.1\ -100\ -100\ -0\ -0\ -0\ -'True'\ -'False'\ -1\ -0.1\ -'Layer'\ -'DN'\ -1024\ -1\ -0\ -output) else: output=Segment_Layer 更新它的工作原理:)经过几次尝试,并在Joseph的帮助下,此代码现在像个魅力一样工作了,最后的技巧是用'None'替换两个可选值。 ##Example=name ##BGREN=optional raster ##Segment_Layer=optional vector …

2
如何使用python gdal / ogr从坐标列表创建多边形shapefile?
我正在尝试使用开源python工具从坐标列表中创建多边形shapefile。以下是我到目前为止从Python GDAL / OGR Cookbook和GIS SE答案中获得的信息。 还有一个类似的问题Python:如何从X,Y坐标列表创建多边形Shapefile?,尽管这个问题是指使用pyshp。但是,我对仅使用gdal / ogr Python工具创建多边形shapefile感兴趣。 import ogr def create_polygon(coords): ring = ogr.Geometry(ogr.wkbLinearRing) for coord in coords: ring.AddPoint(coord[0], coord[1]) # Create polygon poly = ogr.Geometry(ogr.wkbPolygon) poly.AddGeometry(ring) return poly.ExportToWkt() def write_shapefile(poly, out_shp): """ https://gis.stackexchange.com/a/52708/8104 """ # Now convert it to a shapefile with OGR driver = ogr.GetDriverByName('Esri …
10 python  gdal  polygon  ogr 

1
桦木算法未按预期聚类
我正在使用scipy-learn Python程序包中的Birch算法,将一组点集中在一个10个一组的小城市中。 我使用以下代码: no = len(list_of_points)/10 brc = Birch(branching_factor=50, n_clusters=no, threshold=0.05,compute_labels=True) 以我的想法,我总是会得到10分。在我的情况下,我有650个要聚类的点,而n_clusters是65个。 但是,我的问题是,如果阈值太低,我最终只能为一个群集分配1个地址,而阈值则稍大一些-每个群集40个地址。 我在这里做错了什么?

1
如何在QGIS中使用Python脚本将画布数据填充到作曲家地图并将构图导出为png
我想在QGIS中创建一个Python脚本,该脚本将获取一些数据(在我的示例中为shp + tif),使用模板模板Composer(来自文件),并将创建的合成导出到png图像。 几乎没有编程经验(除了基本的Python知识),我在Google上搜索了一些代码片段,并试图使它们协同工作。我从以前回答的一个问题中提取了Map Composer代码: 使用Python将Print / Map QGIS composer视图保存为PNG / PDF(不更改可见布局中的任何内容)吗? 我设法加载了数据和Map Composer模板(已定义了一个地图和图例项目),但我的导出png图像具有一个空的地图框架(该框架内没有矢量/栅格数据)。图例项目看起来很好。 使此代码有效吗? from qgis.core import * import qgis.utils from PyQt4 import QtCore, QtGui from qgis import core, gui # ADD VECTOR LAYER data_folder = "D:/QGIS/dane/" granica = "granica_SZ VI_UTM34.shp" granica_name = granica[0:-4] granica = data_folder + granica …

2
运行python脚本后如何退出QGIS?
我想通过运行python脚本qgis --code myscript.py,然后立即退出。我正在使用iface.actionExit().trigger(),当我从python控制台运行QGIS时,它会杀死QGIS,但当放入传递给的脚本时,它不会--code。 立即退出的正确方法是什么?我正在运行QGIS 2.0.1 更新:我也试过了sys.exit()。QGIS将其捕获并弹出以下窗口: An error occured during execution of following code: execfile('myscript.py') Traceback (most recent call last): File "", line 1, in File "myscript.py", line 14, in sys.exit() SystemExit 更新:os.kill(os.getpid(), 9)可以,但这是一个肮脏的hack,我正在寻找更好的东西。
10 qgis  python  pyqgis 

1
相交线以使用带有QGIS的Python进行交叉?
我有一组代表公交线路的线路。一些线重叠并且走相同的路。 我能够提取节点。 但是我对仅提取这样的交叉点感兴趣: 我怎样才能做到这一点?我正在寻找QGIS或Python的方法。 我尝试了GDAL Python 的交集方法,但这基本上只返回了顶点。 如果有两条线交叉,则QGIS的“ 线交叉点”方法会返回交叉点。但是,如果两条公交线路在同一条道路上走得很远,这并不能给我他们指向合并的位置。

2
使用python gdal从GeoTiff获取坐标和相应的像素值,并将其另存为numpy数组
如何从GeoTiff文件中获取投影坐标以及这些坐标处的实际像素值,然后将其保存到numpy数组中?我有arsenci020l.tif文件,其坐标以米为单位。以下是我在上面运行的gdalinfo的摘要输出。 ~$ gdalinfo arsenci020l.tif Driver: GTiff/GeoTIFF Files: arsenci020l.tif arsenci020l.tfw Size is 10366, 7273 Coordinate System is: PROJCS["Lambert Azimuthal Equal Area projection with arbitrary plane grid; projection center 100.0 degrees W, 45.0 degrees N", GEOGCS["WGS 84", DATUM["WGS_1984", SPHEROID["WGS 84",6378137,298.257223563, AUTHORITY["EPSG","7030"]], AUTHORITY["EPSG","6326"]], PRIMEM["Greenwich",0], UNIT["degree",0.0174532925199433], AUTHORITY["EPSG","4326"]], PROJECTION["Lambert_Azimuthal_Equal_Area"], PARAMETER["latitude_of_center",45], PARAMETER["longitude_of_center",-100], PARAMETER["false_easting",0], PARAMETER["false_northing",0], UNIT["metre",1, AUTHORITY["EPSG","9001"]]] …

1
使用GDAL和Python进行地理配准栅格?
我想使用python和对栅格进行地理配准GDAL。我当前的方法是调用gdal_translate和gdalwarp使用os.system地面控制点列表。我真的很想在本地进行此操作python。 这是我正在使用的当前过程: import os os.system('gdal_translate -of GTiff -gcp 1251.92 414.538 -7.9164e+06 5.21094e+06 -gcp 865.827 107.699 -7.91651e+06 5.21104e+06 "inraster.tif" "outraster1.tif"') os.system('gdalwarp -r bilinear -tps -co COMPRESS=NONE "outraster2.tif" "outraster3.tif"') 有一个以前的问题和答案在2012年里面写明了gdal_translate可以导入后进行访问gdal。我不确定是否已过时,或者是否错误,但是当我运行时,from osgeo import gdal我不认为这gdal.gdal_translate是一个选择。 我不知道它是否存在,但是如果我能以pythonic的方式翻译和重新投影栅格,我将不胜感激。例如: # translate gcp_points = [(1251.92, 414.538), (-7.9164e+06, 5.21094e+06)] gdal.gdal_translate(in_raster, gcp_points, out_raster1) # warp gdal.gdalwarp(out_raster1, out_raster2, 'bilinear', args*) 这样的方法可行吗?

5
栅格差异:如何检查图像是否具有相同的值?
是否可以检查给定的2个栅格图层是否具有相同的内容? 我们的公司共享存储量有一个问题:它太大了,需要三天以上的时间才能进行完整备份。初步调查显示,占用空间最大的罪魁祸首之一是应使用CCITT压缩将开/关栅格真正存储为1位图层。 该示例图像当前为2位(因此有3个可能的值),并保存为文件系统中11 MB的LZW压缩tiff。转换为1bit(所以有2个可能的值)并应用CCITT Group 4压缩后,我们将其压缩到1.3 MB,几乎节省了一个完整的数量级。 (这实际上是一个表现良好的公民,还有其他人存储为32位浮点数!) 这真是个好消息!但是,也有将近7,000张图像可以应用。编写脚本来压缩它们将很简单: for old_img in [list of images]: convert_to_1bit_and_compress(old_img) remove(old_img) replace_with_new(old_img, new_img) ...但是它缺少一项至关重要的测试:新压缩的版本内容相同吗? if raster_diff(old_img, new_img) == "Identical": remove(old_img) rename(new_img, old_img) 有没有一种工具或方法可以自动(取消)证明Image-A的内容与Image-B的内容具有相同的价值? 我可以使用ArcGIS 10.2和QGIS,但是除了可以避免手动检查所有这些图像以确保覆盖之前的正确性之外,其他所有功能都可以使用。错误地转换和覆盖确实具有超过开/关值的图像将是可怕的。其中大多数会花费数千美元来收集和生成。 更新:最大的违规者是32位浮点数,每边最大可达100,000px,因此约30GB未压缩。

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.