2011-09-08 52 views
1

我想转换一个shapefile我必须SQL格式。转换Shapefile到SQL

我试过用shp2pgsql这样做,但是,唉,这个程序没有读取SHAPEFILE.prj文件,所以我最终得到的坐标格式不方便。

有没有办法将shapefile转换为尊重PRJ规范的SQL?

+0

你能告诉什么样的记录看起来像一个例子吗?还有'\ d the_table name'的输出? – unmounted

+0

我个人会将形状文件读入R并将它们导出到一个sql表中。 –

回答

2

您可能在一个投影中想要显示或使用更熟悉的值(如经度和纬度)进行交互。例如星球OpenStreetMap的使用球形墨卡托并为您提供价值这样的,当你问文本:

cal_osm=# select st_astext(way) from planet_osm_point limit 3; 
       st_astext     
------------------------------------------- 
POINT(-13852634.6464924 4928686.75004766) 
POINT(-13850470.0501262 4930555.55031171) 
POINT(-13850160.8268447 4930880.61375574) 
(3 rows) 

您可以使用st_transform回到更熟悉的格式是这样的:

cal_osm=# select st_astext(st_transform(way, 4326)) from planet_osm_point limit 3; 
       st_astext     
------------------------------------------- 
POINT(-124.440334282677 40.4304093953086) 
POINT(-124.42088938268 40.4431868953078) 
POINT(-124.418111582681 40.4454091953076) 
(3 rows) 
0

PRJ文件本质上是一个文本文件,其中包含ESRI已知文本(WKT)格式的坐标系信息。你能写一个使用shp2pgsql来转换几何的程序,然后存储prj中相关的WKT字符串吗?

注意:WKT格式是EPSG接受的格式,用于划定投影和地理坐标系信息,但不同的机构对于投影或投影参数可能有不同的名称。 PostGIS可能与Oracle不同,后者可能与ESRI不同。因此,如果您存储prj的WKT,请确保它位于esri_coordinate_system列中。对于参数,PostGIS可能有不同的命名约定格式。

此外,如果您有兴趣,有一个C++打开FileGDB api,允许您访问没有许可证的行信息。它提供32位和64位Windows和Linux上:

http://resources.arcgis.com/content/geodatabases/10.0/file-gdb-api