2011-09-08 74 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