通常のJSONをGeoJSONに変換することは可能ですか?


10

これが繰り返し質問である場合は申し訳ありませんが、ここで検索したところ、回答が見つかりませんでした。Openpaths.ccからエクスポートしたJSONデータがあり、緯度と経度の値が含まれています。ただし、データはGeoJSON形式ではないため、OGR2OGRで読み取ることができません。私のデータをGeoJSONに変換する方法について誰かが正しい方向に向けてくれますか?最終的にはリーフレットで表示したいです。データは次のようになります。

[
{
    "lon": -73.97, 
    "device": "iPhone3,3", 
    "version": "1.1", 
    "t": 1381167616, 
    "lat": 40.66, 
    "alt": 67, 
    "os": "6.1.3"
}, 
{
    "lon": -73.96, 
    "device": "iPhone3,3", 
    "version": "1.1", 
    "t": 1381171200, 
    "lat": 40.66, 
    "alt": 45, 
    "os": "6.1.3"
} 

]



Failure: Unable to open datasource私のjsonデータでそれを試すと、ogr2ogrからを取得します。
clhenrick 2013年

あなたはjsfiddleまたはpastbinにファイル/コードを投稿できますか?
Mapperz

コード?上記のデータ形式を変更するだけです。上記のJSONはサンプルですが、それはスキーマです。
clhenrick 2013年

最も簡単な方法は、レイヤーをコードなしでQGISのGeoJsonとして保存することです!
maxkpow 2016年

回答:


11

したがって、このpythonスクリプトは、上記のようにjson入力ファイルを受け取り、適切にフォーマットされたgeojsonを出力ファイルに書き込みます。

ターミナルでスクリプトを実行する python scriptname.py input_file.json output_file.json

#! usr/bin/env python

from sys import argv
from os.path import exists
import simplejson as json 

script, in_file, out_file = argv

data = json.load(open(in_file))

geojson = {
    "type": "FeatureCollection",
    "features": [
    {
        "type": "Feature",
        "geometry" : {
            "type": "Point",
            "coordinates": [d["lon"], d["lat"]],
            },
        "properties" : d,
     } for d in data]
}


output = open(out_file, 'w')
json.dump(geojson, output)

print geojson

コマンドラインでJSONファイルを使用してこれを試すと、次のエラーが表示されます:ファイル "json2geojson.py"、行28印刷geojson ^ SyntaxError:無効な構文これで助けてもらえますか?
ステファン

こんにちは@Stefan使用しているPythonのバージョンは?その行をコメントアウトすると機能しますか?
clhenrick 2014年

1
私はpython 2.7を使用しているため、問題になる可能性があります。変更import simplejson as jsonしてみてくださいimport json
clhenrick 2014年

1
@Stefanあなたがあなたのjsonデータをどこかに投稿して私がそれを見ることができるようにできますか?
clhenrick 2014年

1
データのフォーマットは私のものとは異なります。最も外側の要素を削除し、削除して{ }"events:"残しておく[ ]と、データファイルが保存され、スクリプトが実行されます。これが私が意味するところです:jsfiddle.net/chenrick/1cjh81hf
clhenrick

2

従うことをお勧めします:

1- http://www.danmandle.com/blog/json-to-csv-conversion-utility/を使用してjsonをcsvに変換します

2- http://www.gdal.org/ogr/drv_csv.htmlを使用してcsvデータ用のvrtファイルを作成します

3- GDALを使用(ogr2ogr -f 'GeoJSON' output_file input_file)

4-リーフレットライブラリを使用して、出力geojsonファイルをマップにロードします

お役に立てば幸いです。


ファーハットのおかげで、このソリューションは機能します。私はまた、これをここで
clhenrick

0

純粋なブラウザでのArcGIS JSONからGeoJSONThereへの変換

あなたがすることができる2つの方法があります

1)テラフォーマー

注:node.jsでの使用とブラウザーでの使用は異なります。詳細はリンクを参照してください

2)Esri / arcgis-to-geojson-utils

Esriはbundle.jsを提供しないため、このlibをブラウザーで直接使用することはできません

現在のところ、ブラウザでモジュールをロードすることはできません。

ESIR libは、ブラウザーではなく、node.jsでのみ使用できます。

このesri libをブラウザーで使用するには、いくつかのバンドラーを使用する必要があります。以下に従ってください。

a)すべてのモジュールソースファイルを1つのbundle.jsにコンパイルする必要があります。

rollup.js install by

npm install --global rollup

次に、js libルートフォルダーに移動し、エントリポイントのjsファイルを見つけます。この場合は、index.jsです。

$ rollup index.js --format umd --name "esri_arcgis_to_geojson" --file bundle.js

ルートディレクトリに新しいファイルbundle.jsが見つかります。

ブラウザのhtmlファイルに、このbundle.jsファイルを含めます

<script src='.../.../.../bundle.js'>

あなたは今それを使うことができます

  // parse ArcGIS JSON, convert it to GeoJSON
  var geojson = esri_arcgis_to_geojson.arcgisToGeoJSON({
                            "x":-122.6764,
                            "y":45.5165,
                            "spatialReference": {
                              "wkid": 4326
                            }
                            });

 // take GeoJSON and convert it to ArcGIS JSON
  var arcgis = esri_arcgis_to_geojson.geojsonToArcGIS({
                            "type": "Point",
                              "coordinates": [45.5165, -122.6764]
                            });enter code here

覚えておいてくださいesri_arcgis_to_geojsonはあなたがlibの名前の名前です。

これは、ブラウザで使用可能なグローバル変数名になります。

トリックは、バンドルプロセスが(function xx {})のようなインスタント実装関数を追加することです。ここがbundle.jsの上部です。

  (function (global, factory) {
     typeof exports === 'object' && typeof module !== 'undefined' ? 
        factory(exports) :
      typeof define === 'function' && define.amd ? define(['exports'], 
         factory) :
      (factory((global.arcgis_to_geojson = {})));
      }(this, (function (exports) { 'use strict';

         ***ORIGINAL SOURCE CODE OF JS MODULE***

     })));

arcgis-to-geojson-utils

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.