当前位置:首页 > 代码 > 正文

shapefile格式说明及读写代码示例(r语言处理shapefile格式)

admin 发布:2022-12-19 12:52 114


今天给各位分享shapefile格式说明及读写代码示例的知识,其中也会对r语言处理shapefile格式进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

C++中怎么读取shapefile格式的文件

Shapefile文件是美国环境系统研究所(ESRI)所研制的GIS文件系统格式文件,是工业标准的矢量数据文件。

一个Shape文件包括三个文件:一个主文件(*.shp),一个索引文件(*.shx),和一个dBASE(*.dbf)表。主文件是一个直接存取,变长度记录的文件,其中每个记录描述构成一个地理特征(Feature)的所有vertices坐标值。在索引文件中,每条记录包含对应主文件记录距离主文件头开始的偏移量,dBASE表包含SHP文件中每一个Feature的特征属性,表中几何记录和属性数据之间的一一对应关系是基于记录数目的ID。在dBASE文件中的属性记录必须和主文件中的记录顺序是相同的。图形数据和属性数据通过索引号建立一一对应的关系。

在了解了文件格式之后,你可以使用任何一种C++的文件读取方法来读取并解析Shapefile(OpenFile、fopen、CFile、ifstream都是可以的),但文件的格式解析需要大量的自定义代码,这里篇幅限制就不一一列举了。

另外一种方法,就是使用各个地理信息系统(GIS)的组件支持来完成Shapefile的读取,比如基于ArcGIS  Silverlight  API的WebGIS系统,就可以很方便的类似数据库一样完成信息的提取:

       //获取拖放到地图上的文件信息  

       IDataObject dataObject = e.Data as IDataObject;  

       FileInfo[] files = dataObject.GetData(DataFormats.FileDrop) as FileInfo[];  

   

       //判断拖放的文件是否为.shp和.dbf  

       FileInfo shapeFile = null;  

       FileInfo dbfFile = null;  

       foreach (FileInfo fi in files)  

       {  

           if (fi.Extension.ToLower() == ".shp") shapeFile = fi;  

           if (fi.Extension.ToLower() == ".dbf") dbfFile = fi;  

       }  

   

       // 读取Shapefile数据   

       ShapeFile shapeFileReader = new ShapeFile();  

       if (shapeFile != null  dbfFile != null)  

       {  

           shapeFileReader.Read(shapeFile, dbfFile);  

       }  

       else  

       {  

           MessageBox.Show("请将.dbf和.shp文件同时拖放到地图上!");  

           return;  

       }  

   

       IListGraphic lstGraphics = new ListGraphic();  

       foreach (ShapeFileRecord record in shapeFileReader.Records)  

       {  

           //将从Shapefile中读取的记录转换为Graphic  

           Graphic graphic = record.ToPointGraphic();  

           if (graphic != null) lstGraphics.Add(graphic);  

       }  

   

       // 如果空间参考不一致,可能需要投影  

       if (lstGraphics.Count  0)  

       {  

           GeometryService projectTask = new GeometryService("");  

           projectTask.ProjectCompleted += new EventHandlerGraphicsEventArgs(projectTask_ProjectCompleted);  

           projectTask.Failed += new EventHandlerTaskFailedEventArgs(projectTask_Failed);  

   

           //将平面坐标转换为经纬度  

           projectTask.ProjectAsync(lstGraphics, myMap.SpatialReference);  

       }

如何用IDL处理Shapefile数据

如何用IDL处理Shapefile数据

使用IDL处理shapefile格式,需要了解IDLffShape对象,IDL帮助中有一些说明和代码,但过于简单,不熟悉的人很难上手,现对几个关键点进行说明:感和GIS不分家,IDL擅长处理遥感数据,但偶尔也需要用来处理一些GIS数据,不过还好IDL能处理Shapefile数一、读取shapefile文件1.首先要打开文件

我们用Arcview带的数据做例子吧,就用那个国界数据吧。

创建和销毁idlffshape分别使用的是IDL处理对象的通用命令OBJ_new和Obj_Destroy,每建立一个对象都要记着要销毁,否则会出现内存不足问题。

Python shapefile.Writer方法代码示例

本文整理汇总了Python中 shapefile.Writer方法 的典型用法代码示例。如果您正苦于以下问题:Python shapefile.Writer方法的具体用法?Python shapefile.Writer怎么用?Python shapefile.Writer使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在 类 shapefile 的用法示例。

shp格式文件是什么样的

包括一个主文件,一个索引文件,和一个dBASE表。

shape文件由ESRI开发,一个ESRI(Environmental Systems Research Institute)的shape文件包括一个主文件,一个索引文件,和一个dBASE表。其中主文件的后缀就是.shp。

shp文件由固定长度的文件头和接着的变长度记录组成。每个变长度记录是由固定长度的记录头和接着的变长度记录内容组成。

扩展资料

Shapefile格式是由多个文件组成的,要组成一个Shapefile,有三个文件是必不可少的,它们分别是".shp", ".shx"与 ".dbf"文件。

表示同一数据的一组文件其文件名前缀应该相同。例如,存储一个关于湖的几何与属性数据,就必须有lake.shp,lake.shx与lake.dbf三个文件。

而其中“真正”的Shapefile的后缀为shp,然而仅有这个文件数据是不完整的,必须要把其他两个附带上才能构成一组完整的地理数据。

除了这三个必须的文件以外,还有八个可选的文件,使用它们可以增强空间数据的表达能力。所有的文件名都必须遵循MS DOS的8.3文件名标准(文件前缀名8个字符,后缀名3个字符,如shapefil.shp);

以方便与一些老的应用程序保持兼容性,尽管现在许多新的程序都能够支持长文件名。此外,所有的文件都必须位于同一个目录之中。

参考资料来源:百度百科--SHP

求分享c++编写的读取shapefile文件的代码

ifstream fin("input.dat"); //读取文本文件

ifstream fin("input.dat", ios::binary); //读取二进制文件

读写操作:

ifstream fin("data.dat", iso::binary);

int a;

float b[4];

fin.read(((char *)(a)), sizeof(int));

fin.read(((char *)(b)), sizeof(float)*4);

fin.close();

ofstream fout("data.dat", iso::binary);

int a = 3;

float b[4] = {0.1, 0.2, 0.3, 0.4};

fout.write(((char *)(a)), sizeof(int));

fout.write(((char *)(b)), sizeof(float)*4);

fout.close();

如何利用Python读入shapefile文件? Python如果读入非TXT文件

# filename: test.py

import os

users = [] # 用来保存从文件中读取的数据

for item in os.listdir('.'): # 遍历指定目录

if os.path.isfile(item) and item.endswith('.txt'): # 判断是否为.txt文件

f = open(item) # 打开文件

for line in f: # 读入文件的每一行

if line.startswith('用户名'): # 变量初始化

uid = age = sex = None

elif line.startswith("用户id"): # 根据每行开始内容获取数据

uid = line.split()[1]

elif line.startswith("年龄"):

age = line.split()[1]

elif line.startswith("性别"):

sex = line.split()[1]

users.append([uid, age, sex]) # 将所获得的数据以列表的形式追加到数组中

f.close() # 关闭文件

print(users) # 打印数组内容

# [['12345', '23', '男'], ['12346', '23', '男'], ['12347', '23', '男'], ['12348', '23', '男']]

使用的数据文件:

1.txt

------------

用户名 abc

------------

用户id 12345

年龄 23

性别 男

------------

用户名 小张

------------

用户id 12346

年龄 23

性别 男

2.txt

------------

用户名 张三

------------

用户id 12347

年龄 23

性别 男

------------

用户名 李四

------------

用户id 12348

年龄 23

性别 男

shapefile格式说明及读写代码示例的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于r语言处理shapefile格式、shapefile格式说明及读写代码示例的信息别忘了在本站进行查找喔。

版权说明:如非注明,本站文章均为 AH站长 原创,转载请注明出处和附带本文链接;

本文地址:http://ahzz.com.cn/post/8392.html


取消回复欢迎 发表评论:

分享到

温馨提示

下载成功了么?或者链接失效了?

联系我们反馈

立即下载