Shapefile文件是ESRI公司ArcGIS平台的常用格式文件,是工业标准的矢量数据文件。 Shapefile将空间特征表中的非拓扑几何对象和属性信息存储在数据集中,特征表中的几何对象存为以坐标点集表示的图形文件—SHP文件,Shapefile文件并不含拓扑(Topological)数据结构。
shp一些特性:
一般是项目相关的业务部门提供、或通过图商采购数据,也可以通过一些爬虫工具,如水经微图 、太乐地图 等下载一些矢量数据。
GeoJSON是适合于Web下对各种地理数据结构进行编码的格式,基于Javascript对象表示法的地理空间信息数据交换格式。与普通json文件格式区别在于对其属性及组成由一定规范。
GeoJSON将所有的地理要素分为Point、MultiPoint、LineString、MultiLineString、Polygon、MultiPolygon、GeometryCollection。首先是将这些要素封装到单个的geometry里,然后作为一个个的Feature(要素);要素放到一个要素集合里构成。
shp转geojson有很多工具和方式,我们推荐的是GDAL转换方法
下载gdal安装程序 ,双击安装,一直默认即可,默认安装路径一般为C:\Program Files\GDAL
,安装完成后可以打开浏览检查下。
C:\Program Files\GDAL\gdal-data
C:\Program Files\GDAL\projlib
C:\Program Files\GDAL;
org2ogr是OGR模块中提供的一个重要工具,用于对数据源进行格式转换,打开cmd命令行,参考下面输入命令:
ogr2ogr -f + 导出格式 + 导出文件名称 + 源文件名称
命令(简单):
ogr2ogr -f "GeoJSON" D:\\data\\exp.json D:\\data\\企业.shp
命令(支持中文 + 输出wgs84经纬度):
ogr2ogr -lco encoding=UTF-8 -f "GeoJSON" -t_srs "EPSG:4326" D:\\data\\exp.json D:\\data\\企业.shp
GDAL命令帮助文档
(1)GeoJSON ==> ESRI Shape ogr2ogr -lco encoding=UTF-8 -f "ESRI Shapefile" -t_srs "EPSG:4326" -s_srs "EPSG:4326" E:\\data\\dth-xuexiao-fcfh.shp E:\\data\\dth-xuexiao-fcfh.json
(2)MapInfo ==> ESRI Shape
ogr2ogr -f "ESRI Shapefile" mydata.shp mydata.tab
(3)ESRI Shape ==>MapInfo
ogr2ogr -f "MapInfo File" tabsites.tab sites.shp
(4)MapInfo ==> PostGIS
ogr2ogr -f "PostgreSQL" PG:"host=localhost user=postgres dbname=postgis password=123456″
(5)postgis==>ESRI Shapefile
ogr2ogr -f "ESRI Shapefile" mydata.shp PG:"host=localhost dbname=postgis user=postgres password=123456″ "mytable"
(6)PostGIS ==> KML ogr2ogr -f "KML" neighborhoods.kml PG:"host=localhost dbname=postgis user=postgres password=123456″ -sql "select gid,name,the_geom from neighborhoods"
(7)批量转换
将postgis中所有的表都导出到mydatadump文件夹下,导出格式是ESRI Shapefile
ogr2ogr -f "ESRI Shapefile" mydatadump PG:"host=myhost user=myloginname dbname=mydbname password=mypassword"
部分导出,将指定的表导出到mydatadump中,格式为ESRI Shapefile
ogr2ogr -f "ESRI Shapefile" mydatadump PG:"host=myhost user=myloginname dbname=mydbname password=mypassword" neighborhood parcels
(8)ESRI GeoDatabase (*.mdb) ==>PostGIS
ogr2ogr -f "PostgreSQL" PG:"host=localhost user=someuser dbname=somedb password=somepassword port=5432″ C:\GISData\Geonames.mdb -a_srs EPSG:26986
导入指定的featureclass,重投影,重命名geometry列
ogr2ogr -f "PostgreSQL" PG:"host=localhost user=someuser dbname=somedb" /home/postgres/Data/Geonames.mdb GEONAMES_ANNO_HYDRO -a_srs EPSG: 26986 -t_srs EPSG:4269 -nln ma_hydro -lco GEOMETRY_NAME=the_geom_4269
(9)ESRI Shapefile ==>MySQL
ogr2ogr -f "MySQL" MYSQL:"mydb,host=myhost,user=mylogin,password=mypassword,port=3306″ -nln "world" -a_srs "EPSG:4326″ path/to/world_adm0.shp
(10)Non-spatial Data ==>PostgreSQL
ogr2ogr -f "PostgreSQL" PG:"host=myserver user=myusername dbname=mydbname password=mypassword" sometable.dbf -nln "sometable"
下面是如何将shp和tab文件导入到postgis数据库中的命令方式
ogr2ogr -f PostgreSQL PG:"host=localhost dbname=postgis user=postgres password=850315″ sites.shp
ogr2ogr -f PostgreSQL PG:"host=localhost dbname=postgis user=postgres password=850315″ mytabfile.tab
下面我们以水经微图软件下载合肥道路网为例。
下面我们以 GDAL 数据转换工具为例,转换前确保已经按上面步骤安装好GDAL。
ogr2ogr -lco encoding=UTF-8 -f "GeoJSON" -t_srs "EPSG:4326" D:\\data\\exp.json D:\\data\\合肥道路.shp
转换成功之后将.json 文件放在项目中,
或者放在独立站点服务,可以参考发布三维数据服务。
可以参考示例: