2011-08-06 8 views
8

私のアプリケーションに近所のデータを取得しようとしていますが、私が使用しているデータに問題があります。hereから取得しました。シェイプファイルの座標をどのように変換できますか?

このファイルには、サンフランシスコの近隣地域を含むシェイプファイルが含まれています。私はRuby on Railsフレームワークを実行していますが、現在シェイプファイルを解析するのにGeoRubyを使用しています。

def self.run_import 
    shpfile = '/path/to/realtor_neighborhoods/realtor_neighborhoods' 
    ShpFile.open(shpfile) do |shp| 
    shp.each do |shape| 
     # This gets the first (and only) Polygon from each MultiPolygon 
     polygon = shape.geometry.geometries.first 
     puts polygon.inspect 
    end 
    end 
end 

コードは、ファイルを解析することができますが、私は解釈して座標を理解することができません:

のコードは次のようになります。有効な緯度と経度のために、-180と180の間の座標を期待すると、すべてのポイントには何百万という値があります。例のポイントを見てみましょう:

<GeoRuby::SimpleFeatures::Point:0x00000104566a08 @srid=4326, @with_z=false, \ 
    @with_m=false, @x=6015402.9999795845, @y=2114960.4999904726, @z=0.0, @m=0.0>, 

これらの座標値の形式は何ですか?私を意味のある値に変換するにはどうすればよいですか? (SRID 4326 < => WGS84空間参照系に基づく緯度/経度)

ありがとうございます!

答えて

6

シェイプファイルのデータは、projected geographic dataです。

あなたの質問から、緯度/経度でデータを取得するのが好きなように思えます。それを得るには、データを再投射する必要があります。私はルビーの男ではありませんが、georubyは再投影をサポートしていないことがわかりますhttp://georuby.rubyforge.org/しかし、rgeoはします。 http://www.daniel-azuma.com/blog/archives/28

地図投影の詳細については、hereをご覧ください。ところで

GIS(地理情報システム)のためのstackexchangeサイトは、専門家は、私はこれはまだビューのログを取得している気づい

+0

もっと。仕を

apt-get install gdal-bin

があなたのシェープファイルに関する情報を取得しますあなたはProj.4経由で変換する必要があります。http://virtuoso.rubyforge.org/rgeo/RGeo/CoordSys/Proj4.html –

+0

ありがとう、私は今一日中これを試そうとしています。私は実際にはまだこれをテストしていません: https://github.com/dazuma/rgeo/issues/6 うまくいけば、私はそれを回避し、あなたの答えを受け入れることができます。 – Larry

1

http://gis.stackexchange.comと呼ばれています。私はRGeoと闘うことになったが、別の解決策がある。ルビコードを実行する前に/からあなたの変換を行うことができれば、ogr2ogrをチェックしてください。

は、ここでは一番下の私のコメントに詳細があります:私はWGS84形式にOSGB36英国のナショナル・グリッド形式からシェープファイルで提供されるポイントを変換したいと、私はこの質問に出くわした How Can I Use (Ruby) RGeo to Transform (Unproject) Coordinates

0

(小数度) 。私はこれを理解するのに多くの時間を費やしましたので、このコードが有用であることを願っています。

このコードはffi-ogr宝石を使用し、GDALライブラリが必要です。

require 'ffi-ogr' 

data = OGR.read file_name 
new_spatial_ref = OGR.import_sr(4326, 'epsg') 

data.layers.each do |layer| 
    transformer = OGR::CoordinateTransformation.find_transformation(layer.spatial_ref, new_spatial_ref) 

    layer.features.each do |feature| 
    geometry = OGR::Tools.cast_geometry(feature.geometry) 
    geometry.transform(transformer) 

    # Do something with geometry here 
    end 
end 
0

私は同じ問題を抱えていた:緯度/経度の値に投影地理データを変換したかったです。

ogr2ogrツールは、予想よりもはるかに使いやすくなっています。

は、インストールするには:

ogrinfo data.shp -al -so

変換/ロングとJSON LATする:

ogr2ogr -f GeoJSON -t_srs WGS84 data.json data.shp

+0

私は上記の同じコマンドを試していますが、開くことができないというエラーが発生しました。シェイプファイルだけには.shxと.dbfが必要です。 – Guru

関連する問題