2

シェープファイルがあり、リーフレット(http://leaflet.cloudmade.com/)を使用してWeb上に表示したいと思います。リーフレットはgeoJSONのみをサポートしているため、shpファイルをgeoJSONに変更する必要があります。Quantum-GISで「名前を付けて保存」機能を使用できるので簡単です。

geojsonをデータベースとして使用することはできますが(プログラムでファイルを読み取り、編集、書き込みすることにより)、「実際の」データベースを使用する方が良いと思います。My-SQLは最も人気があり、空間データをサポートしているため、MySQLを使用することにしました。

シナリオは次のとおりです。

  1. shpをMySQLに変更します(私はogr2ogrを使用し、次のコマンドを実行するだけです:ogr2ogr -f "MySQL" MySQL: "geo、user = root、host = localhost、password = toor" -lco engine = MYISAM Airports.shp
  2. MySQLデータベースをgeojsonにフェッチする<-ここに問題があります
  3. ajaxを使用してgeojsonを取得し、レイアウトを変更する<-これは簡単なはずです。JQueryは得意です。

My MySQLテーブルに、そのタイプが「GEOMETRY」である列があります。以下のテーブル定義を参照してください。

CREATE TABLE IF NOT EXISTS `airports` (
  `OGR_FID` int(11) NOT NULL AUTO_INCREMENT,
  `SHAPE` geometry NOT NULL,
  `cat` decimal(10,0) DEFAULT NULL,
  `na3` varchar(80) DEFAULT NULL,
  `elev` double(32,3) DEFAULT NULL,
  `f_code` varchar(80) DEFAULT NULL,
  `iko` varchar(80) DEFAULT NULL,
  `name` varchar(80) DEFAULT NULL,
  `use` varchar(80) DEFAULT NULL,
  UNIQUE KEY `OGR_FID` (`OGR_FID`),
  SPATIAL KEY `SHAPE` (`SHAPE`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=77 ;

そのようなテーブルをgeojson形式に変更する方法はありますか?(私は簡単な方法を好みますが、そうでない場合は、列を配列に変更するだけで問題ありません)

編集: 私はphayesによって書かれたgeophpを使用します。 https://github.com/phayes/geoPHP/wiki/Example-format-converter。これは主な問題を解決します。機能の追加などを少し混乱させるだけです。もっと簡単な解決策はありますか?

4

1 に答える 1

3

mysql 空間エンティティから geojson に直接変換する方法はないかもしれませんが、次の方法を試すことができます。

  • エンティティの WKT (Well Known Text) を取得します。( MySQL リファレンス)
  • WKT から geojson に変換します ( perlで行われますが、他の言語で見つけたり、javascript で独自に記述したりできるはずです)。

他の人が示唆しているように、エンティティで jsonEncode() を呼び出すだけでは、geoJson は得られないことに注意してください。

あなたの質問に直接答えない私の個人的な提案は、データを取得する必要がある形式でデータを保存することです。これにより、データが必要になるたびにデータを処理するために必要なオーバーヘッドが削減されます。

これを行う最も簡単な方法は、提案したように geojson をプレーン テキストで保存することです。何らかの理由で、ジオメトリをネイティブ形式で保存する必要がある場合は、別の列に保存できます。唯一の欠点は、2 つの列の同期を保つことです。

于 2012-06-15T03:40:00.957 に答える