2010-06-30 315 views
3

我正在使用mapdotnet服務爲我們的gis應用程序加載shapefile,而此mapdotnet服務需要proj4的詳細信息。我從spatialreference.org獲得它們,但對於this projection,proj4的詳細信息是blank。我如何從.prj文件或shapefile中獲取proj4的詳細信息?如何從shapefile的.prj文件獲取Proj4細節?

下面是shape文件的.PRJ:

PROJCS["NAD_1983_HARN_WISCRS_EauClaire_County_Feet",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",394000.0],PARAMETER["False_Northing",300812.797],PARAMETER["Central_Meridian",-91.28888888888889],PARAMETER["Standard_Parallel_1",45.87228112638889],PARAMETER["Scale_Factor",1.000035079],PARAMETER["Latitude_Of_Origin",45.87228112638889],UNIT["Foot_US",0.3048006096012192]] 
+0

這樣的GIS重量級問題可能會得到更高級別的專家關注[GIS Stack Exchange](http://gis.stackexchange.com/)。 – 2014-06-18 16:14:47

回答

0

它應該能夠從各個部件做出來。 Proj.4允許指定所有內容。您將需要ESRI文檔來獲取PRJ文件。這將包括它們的定義(如:是什麼NAD83_HARN和正常NAD83之間的區別?它們migth是相同的,但我不知道)

另一種方法可能是看GDAL/OGR庫和工具。這些能夠讀取大多數PRJ文件。

2

使用和rgdal庫備選:

library(rgdal) 
# read the .shp file - layer is the same name but without the .shp 
mymap <- readOGR("CA_tract_2000.shp", layer="CA_tract_2000") 
# proj4 info is located in the layer's proj4string slot 
[email protected] 
6

您也可以使用這個Python腳本(在互聯網上看到其他地方):

#!/usr/bin/env python 

import osr 
import sys 

def main(prj_file): 
    prj_text = open(prj_file, 'r').read() 
    srs = osr.SpatialReference() 
    if srs.ImportFromWkt(prj_text): 
     raise ValueError("Error importing PRJ information from: %s" % prj_file) 
    print srs.ExportToProj4() 
    #print srs.ExportToWkt() 

if __name__=="__main__": 
    main(sys.argv[1]) 
+1

如果您無法「導入osr」,請嘗試安裝GDAL python模塊(pip install gdal),然後從「osgeo import osr」中安裝。 – Marian 2014-03-25 11:26:45

2

使用perl腳本另一種解決方案(需要地理:: GDAL):

#!/usr/bin/perl -w 
use strict; 
use Geo::OSR; 
my $srs = Geo::OSR::SpatialReference->new; 
my $prj_text = do { open my $fh, shift or die $!; local $/; <$fh> }; 
$srs->ImportFromWkt($prj_text); 
print $srs->ExportToProj4, "\n"; 
相關問題