Questions tagged «ogr»

OGR简单功能库是C ++开源库(和命令行工具),提供对矢量文件格式的访问。




1
如何将线形文件转换为带有节点和链接的CSV?
有没有一种方法可以将线性shapefile转换为以下格式的CSV文件: Node_1, Node_2, attribute_1, ...., attribute_x 1 2 "hello" 567845.334 我看过GDAL / OGR2OGR和PostGIS,但我也不认为会将数据转换成我想要的格式。 如果我朝着正确的方向发展,我不介意编写脚本来执行此操作。
12 shapefile  convert  ogr  csv 

3
使用GDAL计算shapefile中多边形的总面积?
我在英国国家网格投影中有一个shapefile: Geometry: 3D Polygon Feature Count: 5378 Extent: (9247.520209, 14785.170099) - (638149.173223, 1217788.569952) Layer SRS WKT: PROJCS["British_National_Grid", GEOGCS["GCS_airy", DATUM["OSGB_1936", SPHEROID["Airy_1830",6377563.396,299.3249646]], PRIMEM["Greenwich",0], UNIT["Degree",0.017453292519943295]], PROJECTION["Transverse_Mercator"], PARAMETER["latitude_of_origin",49], PARAMETER["central_meridian",-2], PARAMETER["scale_factor",0.9996012717], PARAMETER["false_easting",400000], PARAMETER["false_northing",-100000], UNIT["Meter",1]] cat: Integer (9.0) 我可以使用GDAL / OGR来获取shapefile中所有多边形的总面积(以公顷为单位)吗? 我想知道是否可以使用-sql,例如: ogrinfo -sql "SELECT SUM(ST_Area(geom::geography)) FROM mytable" myshapefile.shp 但是,尝试让我得到ERROR 1: Undefined function 'ST_Area' used.。 我想我可以将Shapefile导入QGIS,为每个多边形添加一个area属性,然后对其求和,但是如果可能的话,我宁愿使用命令行工具。
11 gdal  ogr  area  ogrinfo 

2
使用gdal / ogr将CSV文件加入shapefile?
我有几个属性shape文件,例如YEAR,COUNTY和AREA。我还有一个CSV文件,其中包含我想要在shapefile中使用的更多字段,例如POPULATION。shapefile和CSV文件都有一个字段GISJOIN。我知道如何在QGIS中加入。但是,如何使用ogr2ogrGDAL / OGR中的一个或其他工具进行永久连接并写入shapefile ?

3
将复杂的shapefile划分为网格
我有一个具有多边形/多多边形特征的相当详细的shapefile(文件约为500mb)。它实际上是整个世界的shapefile,其特征代表海岸线。我需要使用网格划分此数据。明确地说,我不想对数据进行“排序”,而是将多边形实际切成小块。我知道之前曾有人问过这个问题,但是我发现的解决方案对我不起作用。 我试过了: 使用QGIS并将我的shapefile内容与矢量网格相交-结果非常糟糕。大多数主要陆地都神奇地消失了,尽管有时似乎有较小的一块土地。我应该注意,这种方法对简单得多的数据(例如,较少的点)非常有效 使用OGR的相交工具。我通过ogr2ogr甚至通过滚动自己的C ++工具都进行了尝试。两者都具有与QGIS相同的问题。对于简单的文件,它们也不会出现此问题,但是对于较复杂的文件,则不会通过。作为参考,我使用的是澳大利亚和新西兰的shapefile,大小不超过20mb,并且QGIS和OGR都无法对其进行“网格化”。 有人建议一次使用PostGIS,因为它具有交集功能-但PostGIS的ST_Intersect使用与OGR相同的GEOS后端。实际上,据我所知,它们都调用相同的函数,因此我认为PostGIS不会产生不同的结果。 我一直在寻找关于其他尝试方法的建议。我需要一个功能强大的应用程序或工具包,可以将高度详细的shapefile划分为图块。 编辑:添加一些更多的信息 针对Simbamangu: shapefile基本上是来自OpenStreetMap的海岸线数据。这是“ processed_p”文件的合并版本(因此不会拆分为图块),我通过给他们的开发人员列表发送了电子邮件。请注意,他们将瓦片分割成100km x 100km重叠的块并不一定是我想要的-我不希望重叠,我想自由选择网格大小,或者我只想使用默认处理的_p。 默认情况下,海岸线数据具有QGIS报告的几何误差。我使用一个小的工具将这些错误汇总在一起,使用发现的一些代码专门解决了这个问题(修复海岸线数据中的几何错误:https : //github.com/tudelft-gist/prepair)。使用此工具在文件上运行几乎可以修复QGIS发现的所有错误。我仅在清理文件后尝试进行相交。 我使用QGIS所做的正是:打开数据以确保它在QGIS中看起来不错。尝试通过使用具有指定间距的Vector Grid创建一层瓷砖,然后将这两层相交,将其分成多个瓷砖-不行。尝试使用较小的数据集-选择大洋洲(Aus,NZ)中的要素以尝试使用较小的数据集-此形状文件的大小小于20mb。再次尝试将其分割,不起作用。 我对OGR所做的事情:ogr2ogr直接使用带有spat_extent的'-spat'和'-clipsrc'选项。还写了一个可以在WKT上运行的小型C ++工具,因此我使用ogr2​​ogr将shapefile转换为WKT,然后将文本文件提供给我的应用程序。它遍历该文件并调用此处记录的Intersection()方法:http : //www.gdal.org/ogr/classOGRGeometry.html。我认为最终结果与直接使用ogr2​​ogr完全一样。 针对布伦特: 是的 一切都在WGS84纬度/经度中 我以为是相反的事实-对于给定的一组网格图块,与一个巨型多面体相交将花费更长的时间,而不是一堆可以在空间上更局部地定位于每个图块的零碎要素,但这是一个有趣的建议-我会尝试并报告。 在此过程中不会保留任何属性字段,我只对几何感兴趣。 我不确定,但是我想你是说我应该选择与给定网格图块重叠的多边形,然后执行相交。使用QGIS手动操作太麻烦了。我的工具已经通过边界框检查在一定程度上做到了这一点。速度有所提高,但是最终结果仍然很差,并且没有明显的不同。 这不是一个选择。现在,我正在尝试将数据划分为1度经度x 1度经度,并且我正在寻找一种适用于所有情况的通用/稳健方法。我尝试增加网格尺寸(即10x10)以查看是否可以获得更好的结果,并且看不到网格尺寸与输出质量之间的任何关联。 编辑#2: 我尝试了更多,总的来说,使用GEOS和QGIS(使用fTools,我不知道是否又使用GEOS)时,结果似乎都不可靠。我错误地指出网格的大小与结果无关—网格越大,结果越好(这是很好的认识,但仍然不是解决方案)。这是一个实际间隔开的网格的屏幕截图,该网格大部分可用,但在一个磁贴中部分失败: 几何图形很干净-QGIS使用“检查有效性”工具显示0错误。我不是要逐步解决这个问题。验证某些特征是否在视觉上不明显(且不会使用较小的图块)的情况下,无法通过如此大的数据集的交集不可行。

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 

2
如何使用ogr python缓冲矢量shapefile?
我想学习如何使用Python中的国家和居住区的数据集从使用OGR http://www.naturalearthdata.com/downloads/50m-cultural-vectors/。我试图使用过滤器和缓冲区在命名国家/地区的指定缓冲区(从ne_50m_admin_0_countries.shp中的要素类ADMIN过滤)中查找点(ne_50m_populated_places.shp)。问题似乎是我不了解用于buffer()的单位。在脚本中,我只是使用任意值10来测试脚本是否有效。该脚本会运行,但会从加勒比海地区返回命名国家为“安哥拉”的人口稠密的地方。理想情况下,我希望能够指定一个缓冲距离,例如500km,但是由于我的理解是buffer()使用的是country.shp单位(将采用wgs84纬度/经度格式),因此无法解决该问题。对此方法的建议将不胜感激。 # import modules import ogr, os, sys ## data source os.chdir('C:/data/naturalearth/50m_cultural') # get the shapefile driver driver = ogr.GetDriverByName('ESRI Shapefile') # open ne_50m_admin_0_countries.shp and get the layer admin = driver.Open('ne_50m_admin_0_countries.shp') if admin is None: print 'Could not open ne_50m_admin_0_countries.shp' sys.exit(1) adminLayer = admin.GetLayer() # open ne_50m_populated_places.shp and get …
10 python  ogr  buffer 

2
使用ArcGIS Desktop处理SQLite文件?
我的工作使用qgis和grass。我制作的shapefile超过100mbs(一些统计分析的结果)。 如果我将其转换为sqlite格式(已启用空间),则数据会缩小到15 mbs。与电子邮件或保管箱共享它是可以接受的。 但是我的同事使用的是arcgis 9.3-他将能够毫无问题地读取数据吗?

2
如何在GDAL / OGR Python绑定中捕获PostgreSQL / PostGIS错误?
查询失败后是否可以在OGR中捕获PostgreSQL输出错误消息? 例如 conn.ExecuteSQL('SELECT * FROM non_existing_table;') 在Postgres中,这将返回错误消息: "Error: relation 'non_existing_table' does not exist." 在ogr中,我们获得了标准: "Error: current transaction is aborted, commands ignored until end of transaction block" 如果我们能够捕获/解析Postgres错误消息,那将是一个额外的好处。考虑到我对SWIG / CPL的了解,我怀疑这有点长远,但是值得一问,看看是否有人有想法。理想情况下,这将是在Python中进行,但是我也会接受C / C ++注释! 谢谢。

2
为什么我不能编辑KML / GML图层?
我在QGIS上的第一次经验使这里的新手感到困惑 我有几行定义自行车路线。 最初,它们保存在.gml文件中,后来又翻译成.kml,因此可以在GE中查看。 我可以在QGIS中将.gml和.kml都打开为图层,但都不允许我编辑行 如果将.gml或.kml图层另存为Shapefile,然后将该shapefile加载为QGIS图层,则可以编辑这些行。 我还尝试加载.kml文件,新建一个空白shapefile层,选择并复制.kml层上的行,并尝试粘贴到空白shapefile层上,这也是不可能的。 我不知道QGIS在kml层上对线条的理解是否足够好,可以保存为Shapefile,为什么它们不可编辑。我觉得我必须缺少一些基本的东西来解释这一点,也许它还有我应该理解的其他含义。
10 qgis  kml  ogr  editing  gml 

2
如何在QGIS中标记栅格像元?
我尝试在QGIS打印管理器工具中显示一个小分辨率的光栅文件。我想,以显示与每个单元格的值(位置-一个小标签大约每个单元的中间)。 我该怎么办?有没有可以帮助我完成此任务的插件? 我的想法是使用gdal2xyz,使用CSV插件加载此类文件,然后将其另存为矢量文件。不幸的是,这很麻烦,因为我有很多栅格文件。 另一个想法是使用gdal2xyz.py,然后使用ogr2​​ogr将其另存为矢量文件。 有什么方法可以分批处理吗?有什么开源程序可以让我更轻松地做到这一点?
10 qgis  raster  gdal  ogr 

2
DXF属性为z值
我们给了一个包含Elevation属性的DXF,但是我们想生成一个3D DXF。我知道我可以使用以下代码从shapefile生成3D dxf: ogr2ogr -f "DXF" out.dxf in.shp -zfield Elev 但是,ogr驱动程序似乎没有将属性作为dxf中的字段。 有谁知道这是否可能。 如果可能,我想要一个免费的解决方案。我们确实有FME,但我正在寻找其他选择。
10 3d  ogr  fme  dxf 

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 

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.