矢量数据格式访问开源包OGR.
- 格式:ppt
- 大小:101.50 KB
- 文档页数:32
GDALpython教程(1)——⽤OGR读写⽮量数据本教程的讲义和源码都是取⾃Utah State University的openGIS课程相关资料,包括讲义、源码、数据样例,请从此处下载本⼈只是做点翻译,写写学习体会⽽已,版权属于原作者。
欢迎转载,不过别忘了上⾯这段话。
==================================================为什么⽤open source?优点1. 免费,适合个⼈和⼩公司2. 强⼤的开发⼯具,找bug更容易3. 跨平台,windows和linux都能⽤4. 拉风!缺点1. 没有内嵌地理处理器2. ⽤的⼈少Open source RS/GIS模块1. OGR⽮量库:简单的⽮量数据读写,是GDAL的⼀部分2. GDAL地理空间数据抽象库:a) 读写栅格数据b) ArcGIS也是基于GDAL开发的c) C++库,但是可以⽤python调⽤相关模块1. Numeric:⾼速的数组处理,对栅格数据尤其重要2. NumPy:下⼀代的Numeric3. 更强⼤的gis库导⼊库:import ogr或者:from osgeo import ogr万能的⽅法是:try:from osgeo import ogrexcept:import ogr要读取某种类型的数据,必须要先载⼊数据驱动,也就是初始化⼀个对象,让它“知道”某种数据结构。
import ogrdriver = ogr.GetDriverByName(‘ESRI Shapefile’)数据驱动driver的open()⽅法返回⼀个数据源对象open(<filename>, <update>)其中update为0是只读,为1是可写例如:from osgeo import ogrdriver = ogr.GetDriverByName('ESRI Shapefile')filename = 'C:/Users/gongwei/Documents/My eBooks/python_and_sage/GDAL python/test/ospy_data1/sites.shp' dataSource = driver.Open(filename,0)if dataSource is None:print 'could not open'sys.exit(1)print 'done!'注意filename⼀定要写绝对路径!因为⼀定要⽤绝对路径,为了简化代码,经常会使⽤到os.chdir()读取数据层layer = dataSource.GetLayer(0)⼀般ESRI的shapefile都是填0的,如果不填的话默认也是0.再看看这个数据层⾥⾯有⼏个点呢?n = layer.GetFeatureCount()print 'feature count:', n读出上下左右边界extent = layer.GetExtent()print 'extent:', extentprint 'ul:', extent[0], extent[3]print 'lr:', extent[1], extent[2]读取某⼀要素feature(总算切⼊正题了),这⾥读取的是⼀个点feat = layer.GetFeature(41)fid = feat.GetField('id')print fidfeat = layer.GetFeature(0)fid = feat.GetField('id') #should be a different idprint fid另外还有按顺序读取feature,循环遍历所有的featurefeat = layer.GetNextFeature() #读取下⼀个while feat:feat = layer.GetNextFeature()later.ResetReading() #复位提取feature的⼏何形状geom = feat.GetGeometryRef()geom.GetX()geom.GetY()print geom.释放内存feature.Destroy()关闭数据源,相当于⽂件系统操作中的关闭⽂件dataSource.Destroy()读完了再说怎么写创建新⽂件driver.CreateDataSource(<filename>)但是这个⽂件不能已经存在了,否则会出错创建新的layerdataSource.CreateLayer(<name>,CreateLayer(<name>, geom_type=<OGRwkbGeometryType>, [srs])举个例⼦:ds2 = driver.CreateDataSource('test.shp')layer2 = ds2.CreateLayer('test', geom_type=ogr.wkbPoint)要删除⼀个shp⽂件driver.DeleteDataSource('test.shp')要添加⼀个新字段,只能在layer⾥⾯加,⽽且还不能有数据添加的字段如果是字符串,还要设定宽度fieldDefn = ogr.FieldDefn('id', ogr.OFTString)fieldDefn.SetWidth(4)layer.CreateField(fieldDefn)添加⼀个新的feature,⾸先得完成上⼀步,把字段field都添加齐了然后从layer中读取相应的feature类型,并创建featurefeatureDefn = layer.GetLayerDefn()feature = ogr.Feature(featureDefn)设定⼏何形状feature.SetGeometry(point)设定某字段的数值feature.SetField('id', 23)将feature写⼊layer layer.CreateFeature(feature)。
GDAL python教程基础篇OGR空间计算GDAL是一个用于地理空间数据读写的库,它支持多种常见的地理格式,如GeoTIFF和ESRI Shapefile等。
而OGR则是GDAL中的一个子库,它支持矢量数据格式,如ESRI Shapefile和GeoJSON等。
本文主要介绍如何使用OGR进行空间计算。
首先需要安装GDAL和OGR,可以通过pip来安装:```bashpip install gdal```接着可以在Python中使用OGR来读取矢量数据,如下所示:```pythonfrom osgeo import ogr# 打开Shapefile文件driver = ogr.GetDriverByName('ESRI Shapefile')dataSource = driver.Open('data.shp', 0)# 获取图层layer = dataSource.GetLayer()# 可以遍历所有要素for feature in layer:# 处理每个要素```接着可以使用OGR进行空间计算,如计算两个多边形的相交部分,代码如下:```pythonfrom osgeo import ogr# 打开Shapefile文件driver = ogr.GetDriverByName('ESRI Shapefile')dataSource1 = driver.Open('data1.shp', 0)dataSource2 = driver.Open('data2.shp', 0)# 获取图层layer1 = dataSource1.GetLayer()layer2 = dataSource2.GetLayer()# 获取多边形要素polygon1 = layer1.GetFeature(0).GetGeometryRef()polygon2 = layer2.GetFeature(0).GetGeometryRef()# 计算相交部分intersection = polygon1.Intersect(polygon2)# 打印相交面积print(intersection.GetArea())```以上代码假设每个Shapefile文件只有一个多边形要素,如果有多个要素,需要修改代码来遍历所有要素。
测绘软件的数据格式转换和融合方法介绍测绘软件是地理信息系统 (GIS) 领域中不可或缺的工具,它们能够将地理数据转换为可视化的地图和图形。
而在测绘过程中,数据格式转换和融合是常见的需求,本文将介绍测绘软件中常用的数据格式转换和融合方法。
一、数据格式转换1. 矢量数据格式转换矢量数据是由点、线、面等几何要素构成的地理数据,常见的格式包括Shapefile、GeoJSON和KML等。
在测绘过程中,不同的软件可能支持不同的矢量数据格式,因此需要进行格式转换。
常用的矢量数据格式转换工具包括GDAL和OGR。
GDAL (Geospatial Data Abstraction Library) 是一个开源的库,能够读取和写入多种地理数据格式;而OGR (Simple Features Library) 则是GDAL中的一个模块,专门用于矢量数据格式转换。
使用GDAL和OGR进行矢量数据格式转换非常简单。
例如,使用以下命令将Shapefile格式转换为GeoJSON格式:```shellogr2ogr -f GeoJSON output.geojson input.shp```2. 栅格数据格式转换栅格数据是由像素组成的二维网格,常见的格式包括TIFF、JPEG、PNG等。
在测绘过程中,栅格数据的格式转换常常用于不同软件之间或不同设备之间的数据交换。
GDAL同样支持栅格数据格式的转换。
例如,使用以下命令将TIFF格式转换为JPEG格式:```shellgdal_translate -of JPEG input.tif output.jpg```二、数据融合数据融合是将不同数据源的测绘数据整合在一起,形成更完整和准确的地理信息。
在实际应用中,常见的数据融合方法包括覆盖、融合、融合和遮挡等。
1. 覆盖覆盖是指将一个数据图层覆盖在另一个数据图层之上,从而得到一个包含两个图层信息的新图层。
这种数据融合方法常用于将不同比例尺的地图叠加在一起,以便更好地显示地理信息。
ogr2ogr 转换shapefile 编码摘要:1.引言2.ogr2ogr 转换器的作用3.Shapefile 格式的特点4.编码在Shapefile 中的应用5.ogr2ogr 转换shapefile 编码的步骤6.结语正文:一、引言地理信息系统(GIS)是处理地理空间数据的一种技术,它广泛应用于资源管理、环境保护和城市规划等领域。
在GIS 中,Shapefile 是一种常见的矢量数据格式。
为了在GIS 软件中使用Shapefile,需要将其转换为相应的数据格式。
ogr2ogr 是一款开源的GIS 数据转换工具,可以方便地将Shapefile 转换为其他格式。
本文将介绍如何使用ogr2ogr 转换器转换Shapefile 编码。
二、ogr2ogr 转换器的作用ogr2ogr 是一款功能强大的GIS 数据转换工具,它可以实现多种地理信息数据格式之间的转换。
ogr2ogr 支持Shapefile、GeoJSON、KML、GPXG 等格式,可以满足大部分GIS 数据处理需求。
在本文中,我们将重点关注ogr2ogr 在Shapefile 转换方面的应用。
三、Shapefile 格式的特点Shapefile 是一种常用的矢量数据格式,它包含了几何对象和属性数据。
Shapefile 的主要特点如下:1.存储空间:Shapefile 采用文件存储方式,将地理信息数据与属性数据分别存储在不同的文件中,方便数据的管理和查询。
2.数据结构:Shapefile 中的几何对象采用几何图形和节点构成,支持点、线、面等不同类型的几何对象。
3.属性数据:Shapefile 中的属性数据采用dbf 文件存储,可以包含多个字段,支持各种数据类型。
4.投影系统:Shapefile 支持多种投影系统,可以根据实际需求选择合适的投影系统。
四、编码在Shapefile 中的应用在Shapefile 中,编码指的是地理对象与属性数据之间的关联。
pythonOGR操作⽮量数据OGR简单要素库是地理空间数据抽象库(GDAL)的⼀部分,是⼀个开源库,可以读写许多不同格式的⽮量数据,编辑属性值,筛选等。
当使⽤OGR打开数据源,例如Shapefile⽂件、GeoJSON⽂件,会有⼀个DataSource对象,此数据源可以有⼀个或者多个⼦图层对象,每⼀个图层代表数据源中的⼀个数据集,许多⽮量数据格式(如Shapefile)只能包含⼀个数据集,但是其他如SpatialLite可以包含多个数据集,不管⼀个数据源中有多少数据集,每⼀个数据集都被OGR认为是⼀个图层,也就是说在数据源和实际数据集之间多了⼀个叫做图层(Layer)的东西,这⼀点需要注意理清概念。
对于实际的数据,每⼀个图层都是要素对象的集合,包含其⼏何形状和属性,如果在GIS软件中加载⼀个思路数据,在属性表中的每⼀⾏对应⼀个要素,每列对应⼀个属性字段,在⼀些GIS软件中(ArcGIS)在属性表中会有⼀个shape列显⽰⼏何对象。
读取⽮量数据需要记住⼀个数据源由⼀个或多个图层组成,所以打开数据源后,需要获得具体的图层数据源有⼀个GetLayer函数,可以来获得图层索引或者图层名,图层索引从0开始,默认返回第⼀个图层Shapefile数据源只有⼀个图层,所以不需要提供索引图层由⼀个或多个要素组成,每⼀个要素表⽰⼀个地理对象。
地理对象的⼏何形状和属性值存储在这些要素中from osgeo import ogrimport sysfn=r"D:\00Paper\00Data\zonal_shp\watershed.shp"ds=ogr.Open(fn,0)#1为编辑模式if ds is None:sys.exit('Could not open {0}.'.format(fn))lyr = ds.GetLayer(0)#输出前10个要素的信息i=0for feat in lyr:pg=feat.geometry()name=feat.GetField('ID')print(name)i+=1if i==10:breaknum_features=lyr.GetFeatureCount()#要素个数del ds #删除变量强制关闭⽂件。
GDAL (Geospatial Data Abstraction Library) 是一个在地理信息系统(GIS)领域中非常流行的开源库,它提供了对各种地理空间数据格式的支持。
而 ogr2ogr 则是 GDAL 中一个重要的命令行工具,用于在不同的地理空间数据格式之间进行转换和处理。
本篇文章将重点介绍如何使用 gdal ogr2ogr 工具来进行矢量瓦片的转换。
1. 背景介绍为了更好地展示地理空间数据,瓦片地图已经成为了 Web 地图服务的标准。
瓦片地图分为矢量瓦片和栅格瓦片两种类型,其中矢量瓦片由矢量数据渲染而成,能够在不同的屏幕分辨率下展现清晰的线条和图形,而栅格瓦片则是基于图片的瓦片,无法进行动态样式调整。
2. 使用 gdal ogr2ogr 转矢量瓦片在进行矢量瓦片转换之前,我们需要先准备好输入的矢量数据。
GDAL 支持的矢量数据格式有 Shapefile、GeoJSON、FileGDB 等,我们可以根据实际情况选择合适的格式作为输入。
接下来,我们可以使用ogr2ogr 命令行工具来进行矢量瓦片的转换。
下面是一个简单的示例:```bashogr2ogr -f MVT output.mbtiles input.shp```在这个示例中,我们使用 ogr2ogr 将一个名为 input.shp 的Shapefile 转换为矢量瓦片,并将结果输出为名为 output.mbtiles 的MBTiles 格式文件。
在实际应用中,我们还可以根据需要选择其他的输出格式,比如 GeoPackage 或者 GeoJSON 等。
3. 高级用法除了简单的矢量瓦片转换之外,gdal ogr2ogr 工具还支持一些高级的用法,比如对瓦片进行裁剪、过滤或者合并等操作。
我们可以使用ogr2ogr 命令的-sql参数来对输入数据进行 SQL 查询,并将查询结果转换为矢量瓦片。
又如,我们可以使用 ogr2ogr 的-clipdst参数来指定一个范围,只输出该范围内的矢量数据。
qgis python 用法QGIS是一个开源的地理信息系统软件,Python是QGIS使用的主要编程语言。
以下是一些QGIS Python的常见用法:1. 加载矢量数据:pythonfrom qgis.core import QgsVectorLayerlayer = QgsVectorLayer('path/to/shapefile.shp', 'layer_name', 'ogr')if layer.isValid():QgsProject.instance().addMapLayer(layer)2. 获取图层属性:pythonprovider = layer.dataProvider()fields = provider.fields()for field in fields:print((), field.typeName())3. 创建新图层:pythonfrom qgis.core import QgsVectorLayer, QgsField, QgsMapLayerRegistry, QgsProjectlayer_name = 'new_layer'crs = QgsCoordinateReferenceSystem('EPSG:4326')fields = [QgsField('field1', QVariant.Double)]layer = QgsVectorLayer('Point?crs={}'.format(crs.authid()), layer_name, 'memory')layer.dataProvider().addAttributes(fields) QgsMapLayerRegistry.instance().addMapLayer(layer)4. 迭代图层要素:pythonfeatures = layer.getFeatures()for feature in features:geom = feature.geometry()attrs = feature.attributes()print(geom.asPoint(), attrs)5. 进行空间查询:pythonfilter_expr = "field1 > 10"request = QgsFeatureRequest().setFilterExpression(filter_expr)features = layer.getFeatures(request)for feature in features:geom = feature.geometry()print(geom.asPoint())这些只是QGIS Python的一些基本用法示例,你可以根据具体需求进一步探索更多功能。
ogr2ogr 仿射变换OGR2OGR 是一个用于转换和操作空间数据的开源工具,它可以进行各种几何操作,包括仿射变换。
仿射变换是一种二维坐标变换,可以对图像或地图进行平移、缩放、旋转和倾斜等操作。
要使用 OGR2OGR 进行仿射变换,你需要按照以下步骤进行操作:1. 安装 OGR2OGR:首先,确保你已经安装了 OGR2OGR。
你可以通过运行以下命令来安装:```pip install ogr2ogr```2. 准备输入数据:准备要进行仿射变换的输入数据。
这可以是一个矢量数据文件(如Shapefile、GeoJSON 等)或栅格数据文件(如 TIFF、PNG 等)。
3. 定义仿射变换参数:确定你希望进行的仿射变换的参数。
这些参数包括缩放比例、旋转角度、平移量等。
你可以使用 Python 中的 NumPy 库来定义这些参数。
4. 执行 OGR2OGR 命令:使用 OGR2OGR 命令执行仿射变换。
以下是一个示例命令,假设你的输入数据是一个 Shapefile,输出数据将是一个新的 Shapefile:```ogr2ogr -f "ESRI Shapefile" output.shp input.shp -a_ affine ".sx sy tx ty"```其中,`output.shp` 是输出的 Shapefile 路径,`input.shp` 是输入的 Shapefile 路径,`-a_ affine "sx sy tx ty"` 是指定仿射变换参数的选项,`sx`、`sy` 是水平和垂直缩放比例,`tx`、`ty` 是水平和垂直平移量。
5. 查看输出结果:执行 OGR2OGR 命令后,你将得到一个经过仿射变换的输出数据。
你可以使用适当的 GIS 软件打开输出数据并查看变换后的结果。
请注意,具体的 OGR2OGR 命令和参数可能会根据你的输入数据和输出要求有所不同。
ogr2ogr 转换shapefile 编码(原创版)目录1.引言2.ogr2ogr 转换器的概述3.Shapefile 格式的概述4.编码的选择与转换5.示例与实践6.结论正文【引言】地理信息系统 (GIS) 是一种通过将空间数据与属性数据相结合来捕捉、存储、分析和管理地理信息的技术。
GIS 数据格式的标准化对于数据共享和互操作性至关重要。
Shapefile 是一种常见的 GIS 数据格式,而ogr2ogr 是一个开源的 GIS 数据转换器,可以将 Shapefile 转换为其他格式。
本文将介绍如何使用 ogr2ogr 转换器对 Shapefile 进行编码转换。
【ogr2ogr 转换器的概述】ogr2ogr 是一个命令行工具,可以将 GIS 数据从一个格式转换为另一个格式。
它支持许多不同的数据源和目标格式,包括 Shapefile、GeoJSON、KML 等。
ogr2ogr 转换器还可以处理地理坐标系和投影。
它由OGR(Open Geospatial Reference) 项目开发,是一个开源的 GIS 软件库。
【Shapefile 格式的概述】Shapefile 是一种常见的 GIS 数据格式,可以存储点、线和面等空间几何数据。
Shapefile 文件由多个文件组成,包括.shp(几何图形)、.shx(索引) 和.dbf(属性数据) 等文件。
Shapefile 文件通常使用dbf 文件存储属性数据,这些数据可以是任何类型的数据,包括字符串、数字、日期等。
【编码的选择与转换】在将 Shapefile 转换为其他格式时,需要选择目标格式的编码。
常见的编码包括 UTF-8、UTF-16、ISO-8859-1 等。
选择正确的编码可以确保数据在转换过程中不会丢失或损坏。
例如,如果将 Shapefile 转换为GeoJSON,则应该选择 UTF-8 编码,因为 GeoJSON 是一种基于 JSON 的格式,它使用 UTF-8 编码来存储字符串数据。
总体来说这个过程就是构建数据源->构建层->构建要素->构建形状->关闭数据源。
实例代码:// Create Shapefile.cpp : 定义控制台应用程序的入口点。
#include "stdafx.h"//要包含的GDAL头文件#include <gdal_priv.h>#include <ogrsf_frmts.h>#pragma comment(lib,"gdal_i.lib")bool Creatshape(const char* pszFileName ,int line,int row);int _tmain(int argc, _TCHAR* argv[]){const char *pszFileName="mosaic2.img";/*int m,n;char pathName[100];cout<<"请输入影像(路径名加文件名)\n";cin>>pathName;cout<<"请输入要划分的行数:m ";cin>>m;cout<<"请输入要划分的列数:n ";cin>>n;pszFileName=pathName;*/Creatshape(pszFileName,7,9);return 0;}/********************************************************** **************//*创建过程:构建数据源->构建层->构建要素->构建形状->关闭数据源/* 参数pszFileName 为输入的文件名参数linenum为划分的行数参数rows为划分的列数*//********************************************************** **************/bool Creatshape(const char* pszFileName ,int linenum,int rows){//获取影像信息GDALDataset *poDataSet;GDALAllRegister();poDataSet=(GDALDataset*)GDALOpen(pszFileName,GA_ReadOnly); //打开数据集if (poDataSet==NULL){"Failed to open this dataset!"; //代开失败的话则给出提示并退exit(1);}double Trans[6];//坐标转换参数数组,作为GetGeoTransform()函数的参数int width,height; //影像的像行列数width=poDataSet->GetRasterXSize(); //获取影像列数,为后续划分网格做准备height=poDataSet->GetRasterYSize();//获取影像行数,为后续划分网格做准备poDataSet->GetGeoTransform(Trans);//Xp = padfTransform[0] + P*padfTransform[1] + L*padfTransform[2];//Yp = padfTransform[3] + P*padfTransform[4] + L*padfTransform[5];//In a north up image, padfTransform[1] is the pixel width, and padfTransform[5] is the pixel height.//The upper left corner of the upper left pixel is at position (padfTransform[0],padfTransform[3]).for (int i=0;i<6;i++){cout<<Trans[i]<<endl; //循环输出仿射变换参数//注册shape文件驱动const char* pszDriverName="ESRI Shapefile";OGRSFDriver *poDriver;OGRRegisterAll();poDriver=OGRSFDriverRegistrar::GetRegistrar()->GetDriverByName( pszDriverName);if (poDriver==NULL){printf("%s driver is not available!",pszDriverName);exit(1);}//创建shape文件OGRDataSource *poDS;//创建一个叫myshapefile的目录,存放生成的文件//如果名字有.shp后缀,则直接在当前目录下生成文件poDS=poDriver->CreateDataSource("myshapefile",NULL);if (poDS==NULL){printf("Create my_srtm.ship file failed!");exit(1);}//创建输出图层OGRLayer *poLayer;const char *prj=poDataSet->GetProjectionRef(); //获取栅格影像的空间参考信息cout<<"栅格数据空间参考信息为:\n"<<prj<<endl<<endl;OGRSpatialReference oSRS;oSRS.SetFromUserInput(prj); //将获得的空间参考信息字符串做为文本一次性赋给矢量数据的OGRSpatialReference对象poLayer=poDS->CreateLayer(pszFileName,&oSRS);if (poLayer==NULL){printf("Creat layer failed!");exit(1);}//创建层数据的属性fieldsOGRFieldDefn oField("Point",OFTString);oField.SetWidth(10);if (poLayer->CreateField(&oField)!=OGRERR_NONE){printf("Create Point Field Failed!");exit(1);}//创建features,写入feature到磁盘OGRFeature *poFeature;poFeature=OGRFeature::CreateFeature(poLayer->GetLayerDefn());//绘制外边框OGRLineString Line;OGRPoint Point1(Trans[0],Trans[3]);OGRPoint Point2(Trans[0]+width*Trans[1],Trans[3]);OGRPointPoint3(Trans[0]+width*Trans[1],Trans[3]+width*Trans[4]+height*Trans[ 5]);OGRPointPoint4(Trans[0],Trans[3]+width*Trans[4]+height*Trans[5]);Line.addPoint(&Point1);Line.addPoint(&Point2);Line.addPoint(&Point3);Line.addPoint(&Point4);Line.addPoint(&Point1);//水平方向加线OGRLineString SubHline[50];OGRPoint PointLeft[50],PointRight[50];for (int i=1;i<linenum;i++){PointLeft[i].setX(Trans[0]); //设置左边框上要加线的起点X坐标PointLeft[i].setY((Point4.getY()-Trans[3])/linenum*i+Trans[3]);//设置左边框上要加线的起点Y坐标PointRight[i].setX(Point2.getX());//设置右边框上要加线的起点X坐标PointRight[i].setY((Point4.getY()-Trans[3])/linenum*i+Trans[3]);//设置右边框上要加线的起点Y坐标}for (int i=1;i<linenum;i++){SubHline[i].addPoint(&PointLeft[i]); //左边框上加点SubHline[i].addPoint(&PointRight[i]);//右边框上加点if (i<linenum-1){SubHline[i].addPoint(&PointRight[i+1]); //从右边框的上一点转到下一点,避免交叉斜线的出现}Line.addSubLineString(&SubHline[i]);//将SubHline数组中的每一个线做为子线段添加到Line对象中}Line.addPoint(&Point2);//垂直方向加线OGRLineString SubVline[50];OGRPoint PointUp[50],PointDown[50];for (int j=1;j<rows;j++){//添加上边框上的点PointUp[j].setX((Point2.getX()-Trans[0])/rows*j+Trans[0]);PointUp[j].setY(Trans[3]);//添加下边框上的点PointDown[j].setX((Point2.getX()-Trans[0])/rows*j+Trans[0]);PointDown[j].setY(Point4.getY());}for (int j=1;j<rows;j++){SubVline[j].addPoint(&PointUp[j]);SubVline[j].addPoint(&PointDown[j]);if (j<rows-1){SubVline[j].addPoint(&PointDown[j+1]); //从下边框的前一点转到后一点,避免交叉斜线的出现}Line.addSubLineString(&SubVline[j]);}poFeature->SetGeometryDirectly(&Line);if (poLayer->CreateFeature(poFeature)!=OGRERR_NONE){printf("Failed create feature in shapefile!");exit(1);}OGRFeature::DestroyFeature(poFeature);OGRDataSource::DestroyDataSource(poDS);printf("创建矢量数据成功!\n");return TRUE;}本程序为实习期间,实现:根据栅格数据绘制矢量边界,并进行格网划分,并给栅格数据添加上原始影像的空间参考信息。
arcgis里面ogr类型
ArcGIS中的OGR(OpenGIS Simple Features Reference Implementation,开放地理信息系统简单要素参考实现)类型是指支持矢量数据操作的一组库。
OGR是一个开源的几何库,提供了许多用于读写和处理地理矢量数据的功能。
在ArcGIS中,OGR类型通常指与矢量数据相关的数据类型,包括点、线、面等。
以下是一些常见的OGR类型及其中文对应:
1.OGRPoint:点类型,表示地理空间中的一个点。
2.OGRLineString:线类型,表示地理空间中的一条线。
3.OGRPolygon:面类型,表示地理空间中的一个多边形。
4.OGRMultiPoint:多点类型,表示地理空间中的多个点。
5.OGRMultiLineString:多线类型,表示地理空间中的多条线。
6.OGRMultiPolygon:多面类型,表示地理空间中的多个多边形。
7.OGRGeometryCollection:几何集合类型,表示包含多个几何对象的集合。
这些类型是OGR库中用于表示不同地理空间几何对象的基本构建块。
在ArcGIS中,当涉及到矢量数据的读取、编辑和处理时,OGR类型会被用来描述和操作这些空间几何对象。
ogr 合并要素合并要素:ogr 是一种开源的地理信息系统(GIS) 工具,可以用于将不同格式的地理数据进行转换和合并。
它可以将矢量数据(如点、线、面)和栅格数据(如影像)合并到一个统一的数据集中。
在这篇文章中,我将向您介绍如何使用ogr 工具来合并不同格式的地理数据。
不过,在开始之前,我想先向您简单介绍一下ogr 工具的背景和功能。
ogr 是一个功能强大的工具,它可以读取和写入多种地理数据格式,如shapefile、GeoJSON、KML 等。
使用ogr,您可以轻松地将这些格式的数据进行转换和合并。
无论您是在进行空间分析、地图制作还是其他地理数据处理工作,ogr 都是一个非常实用的工具。
让我们来看一个简单的例子。
假设我们有两个shapefile 文件,一个包含城市的点数据,另一个包含道路的线数据。
我们希望将这两个文件合并成一个文件,以便更方便地进行后续的空间分析。
我们需要打开 ogr 工具。
在命令行中输入 "ogr2ogr" 命令,然后加上相关的参数。
例如,要将城市点数据和道路线数据合并到一个名为merged.shp 的文件中,可以使用以下命令:ogr2ogr -f "ESRI Shapefile" merged.shp cities.shp -append roads.shp 在上述命令中,"-f" 参数指定输出格式为shapefile,"merged.shp"是输出文件的名称,"cities.shp" 是第一个输入文件(城市点数据),"-append" 参数表示将第二个输入文件(道路线数据)附加到输出文件中。
如果一切顺利,您应该可以看到ogr 工具开始执行,并在完成后生成 merged.shp 文件。
这个文件将包含合并后的城市点数据和道路线数据。
除了shapefile 格式,ogr 还支持其他格式的数据转换和合并。