Google Maps APIで使用するために、テキサス州上院地区の WebサイトのShapefileをGeoJSONファイルに変換しようとしています。QGISを使用して容易にしていますが、投影/座標を正しく取得できません。これまでのところ、Google Mercator(EPSG:900913)とWGS 84(EPSG:4326)を試してみました。OpenLayersを使用して結果を確認し、テキサスをギニア湾(0 lat、0 lng)の近くに配置し続けています。
Google Maps APIで使用するために、テキサス州上院地区の WebサイトのShapefileをGeoJSONファイルに変換しようとしています。QGISを使用して容易にしていますが、投影/座標を正しく取得できません。これまでのところ、Google Mercator(EPSG:900913)とWGS 84(EPSG:4326)を試してみました。OpenLayersを使用して結果を確認し、テキサスをギニア湾(0 lat、0 lng)の近くに配置し続けています。
回答:
ダウンロード可能なシェープファイルを直接QGISにロードしても問題ありません。
データはEPSG:3081にあるため、そのままにしておくことをお勧めします。Google APIはlatlong値を想定しているため、ターゲットCRSはEPSG:4326である必要があります。
レイヤーを右クリックし、[名前を付けて保存...]をクリックして、ファイルタイプGeoJSON、別のファイル名、新しいCRSとしてEPSG:4326を選択します。結果をキャンバスに追加して、整列(On-the-fly-reprojection
選択)されていることを確認できます。
これは、サーバー側コードなしで英語以外のエンコードをサポートするWebブラウザーを介してシェープファイルをgeojsonに変換するツールです。zipファイルをアップロードし、正しいテキストのエンコードを設定するだけです。
https://github.com/gipong/shp2geojson.js
このライブラリをGoogle Map API v3で使用する場合、ZIPアーカイブ(PlanS172.zip)がテキサス州上院地区のWebサイトからダウンロードされるため、.prjファイルが含まれているため、EPSGコードフィールドをスキップできます。
loadshp({
url: '/shp/PlanS172.zip', // path or your upload file
encoding: 'big5' // default utf-8
}, function(geojson) {
// geojson returned
});
コマンドライン経由:
ogr2ogr -f GeoJSON -t_srs crs:84 output.geojson input.shp
これは、この回答の Webクライアントが使用するものだと思います。
GeoJSONはJavaScript Object Notationに基づいています。この投稿では、シェープファイルをオンライン、オフライン、または利用可能なAPIの助けを借りて変換するさまざまな方法を探ることができます。Googleマップで使用するために、この投稿をチェックして、シェープファイルをGeoJSONファイルに変換してください。