矢量数据格式

矢量数据目前是最常用的地理空间格式,因为它是存储空间信息最有效的一种方式。而且大体上来说,计算机存储和处理所需的资源少于栅格数据。

矢量数据只存储几何图元,包括点、线和多边形。

Shapefile

使用最普遍的地理空间格式是Esri的Shapefile文件。1998年,地理信息软件公司Esri将Shapefile文件格式标准作为一种开放规范。

项目Shapefile文件支持的文件扩展名

用途

备注

.shp

用于存储要素几何的主文件其中包括几何图形

必要文件。某些软件只需要读取.shp文件中的几何元素,而不需要.shx和.dbf文件

.shx

形状索引文件,适当尺寸的几何元素索引信息可以加快访问

必要文件。这个文件必须和.shp文件配合使用,否则就会失去意义

.dbf

数据库文件,其中包括几何元素的属性信息

必要文件。基于非常古老的FoxPro和Dbase格式设计。目前在开放规范中称其为Xbase。.dbf文件可以被大部分电子表格软件打开

.sbn

空间bin文件,Shapefile文件的索引文件

包含一个特征的边框,映射了一个256×256的整数网格。很常见

.sbx

.sbn文件的索引记录文件

常用空间索引的有序记录索引。很常见

.prj

以WKT格式存储的地图投影信息

很常见的文件并且常用于GIS软件中地图实时投影。相同的格式文件对栅格数据也适用

.fbn

只读特征元素的空间索引

非常少见

.fbx

.fbn文件空间索引的记录索引

非常少见

.ixs

地理编码索引

地理编码应用中很常见,其中包括车辆导航类应用

.mxs

另外一种地理编码索引

比.ixs格式少见一些

.aih

属性索引

非常传统的格式,现代软件已经很少使用

.aih

属性索引

和.ain文件搭配使用

.qix

四叉树索引

开源社区发明的一种空间索引格式,因为Esri直到最近才提供了.sbn和.sbx文件的说明文档

.atx

属性索引

Esri发布的软件中采用的一种特殊的属性索引,可以加快属性查询速度

.shp.xml

元数据

地理空间元数据.xml的容器,可以是任何遵循XML标准的信息,其中的标准包括FGDC和ISO

.cpg

.dbf的代码文件

为.dbf文件提供国际化支持

geojson

GeoJOSN是基于JavaScript对象表示(JavaScript Object Notation,JSON)格式的一种新的、智能化的文本格式,其中JSON用作数据交换格式已经很多年了。除了历史较短,GeoJSON已被主流的地理空间软件和大部分网站发布数据所采用,因为JavaScript是动态网页支持的语言,GeoJSON能够和JavaScript无缝集成。下面是一个点的示例文件:

svg转换成genjson java svg转geojson_svg转换成genjson java

Shapefile转geojson

方法一:ogr2ogr命令转换文件格式

下载这个软件。根据电脑是win32还是x64的进行选择。

svg转换成genjson java svg转geojson_svg转换成genjson java_02


如果是,windows,大家要下载zip版本

svg转换成genjson java svg转geojson_json_03


下载后解压,运行SDKShell.bat:

svg转换成genjson java svg转geojson_svg转换成genjson java_04


然后以命令行式进行输入:

#Shapefile转geojson
ogr2ogr -f GeoJSON D:\\xxx\\result.geosion D:\\xxx\\mangrove.shp

svg转换成genjson java svg转geojson_pycharm_05

#当然也可以GeoJson转shp
ogr2ogr -f "ESRI Shapefile" D:\\xxx\\result.shp  D:\\xxx\\test.geojson

方法二:Python

1、需要安装geopandas

可以使用pip进行安装,也可以使用conda 安装,但需要把其他的一些依赖库事先安装好(numpy, pandas, shapely, fiona, pyproj等)。最省事的就是利用Anaconda安装。

svg转换成genjson java svg转geojson_svg转换成genjson java_06

2、代码

两个参数,input_file(输入的文件,xxx.shp),output_file(输出的文件,xxx.json)。主要代码只有两行:读数据(read_file),写数据(to_file);写数据时指定 driver=“GeoJSON” 即可;为防止中文乱码,指定 encoding=‘utf-8’。

import geopandas as gpd

def Shptogeoj(input_file, output_file):
    data = gpd.read_file(input_file)
    # 指定utf-8编码,防止中文乱码
    data.to_file(output_file, driver="GeoJSON", encoding='utf-8')
    print('Success: File '+input_file.split('\\') [-1] + ' conversion completed')

if __name__ == '__main__':
    input_file = r"MSCities_Geo_Pts\MSCities_Geo_Pts.shp"
    output_file = "MSCities_Geo_Pts_toGeojson.txt"
    Shptogeoj(input_file,output_file)

总结

学习笔记,仅供学习,如有侵权请联系删除。