MapInfo 數據幀導入方法

我們拿到的數據基本上是shp 格式或者 mapinfo的tab 格式的。所以要經過5個過程的轉換才能送到PostGIS 裏面。

1. #mapinfo 文件轉換成 ERSI shp 格式: 結果文件放在前面,這個有點特殊。

ogr2ogr -f "ESRI Shapefile" 花都.shp ./花都樓高.tab

2#轉換座標系:原來是4326 的,轉換成google的900913 座標系。

ogr2ogr -t_srs EPSG:900913 -s_srs EPSG:4326 花都_9.shp 花都.shp

3 #轉換成sql 語句

shp2pgsql -s 900913 花都_9.shp huadu > huadu.sql

4 #轉換成utf-8編碼, 這個是利用mac自帶下的 iconv 命令可以批量完成轉換。Windows 下有其他的轉換方法。比較常用的是利用Uedit32的另存爲,然後選擇UTF-8的格式。

find *.sql -exec sh -c "iconv -f GB18030 -t UTF8 {} > {}.u" \;

5. #然後再用用psql 導入到數據庫中
psql -d GZ125 -f .\huadu.sql.u


補充說明:

用ogr2ogr 需要安裝GDAL/Proj/Geos. Linux 和 Mac 可以通過 sudo apt-get 或者mac ports 獲得。
Windows 下面比較方便的就是安裝MS4W。然後手工增加 900913 的座標投影。

如果安裝的是ms4w, 設置座標系,EPSG:90013
在Dos下執行這個命令:
echo ^<900913^> +proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs ^<^> >> \ms4w\proj\nad\epsg
就可以了。


#如果發生錯誤,可能是900913沒有定義
那麼執行:
INSERT into spatial_ref_sys (srid, auth_name, auth_srid, srtext, proj4text) values (900913 ,'EPSG',900913,'GEOGCS["WGS 84", DATUM["World Geodetic System
1984", SPHEROID["WGS 84", 6378137.0, 298.257223563,AUTHORITY["EPSG","7030"]], AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich", 0.0, AUTHORITY["EPSG","8901"]], NIT["degree",0.017453292519943295], AXIS["Longitude", EAST], AXIS["Latitude", NORTH],AUTHORITY["EPSG","4326"]], PROJECTION["Mercator_1SP"],PARAMETER["semi_minor", 6378137.0],
PARAMETER["latitude_of_origin",0.0], PARAMETER["central_meridian", 0.0], PARAMETER["scale_factor",1.0], PARAMETER["false_easting", 0.0], PARAMETER["false_northing", 0.0],UNIT["m", 1.0], AXIS["x", EAST], AXIS["y", NORTH],AUTHORITY["EPSG","900913"]] |','+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m
+nadgrids=@null +no_defs');
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章