geotools.rb

基盤地図情報GML(道路縁)をgeotools.rbでShapefileに変換

本日公開開始の基盤地図情報。道路縁のデータを geotools.rb で Shapefile に変換してみました。これで、Mac でも基盤地図情報を使えます。

ベルリンが東京だったら

ベルリンとその周辺都市の位置関係を、東京とその周辺に移植してみます。

1点からの半径検索は、Google 投影に変換してから検索するのがベストプラクティス? -- 第2回: Google Mercator 投影の縮尺係数 --

Google Mercator 投影上でのユークリッド距離に (135, 35) での縮尺係数を掛けることで周辺との距離を計算したとき、大圏距離とどのくらいの違いが発生するのかを検証してみましょう。

1点からの半径検索は、Google 投影に変換してから検索するのがベストプラクティス? -- 第1回: Google 投影にふれる --

1点からの半径検索は、データを単純なメルカトル投影 (例えばいわゆる Google 投影)に投影しておいて、検索点を検索距離だけ高緯度にずらした所の縮尺係数を掛けた矩形を使って検索をするのも手。 というような主張を、何回かのエントリに分けて行っていきた…

FeatureList の options に :charset を指定できるようにしました。

geotools.rb の Geo::FeatureList で、DBF ファイルの文字コードを指定できるようにしました。GeoTools 2.4 以降を使うよう設定した geotools.rb で動作します。

DE-9IM predicates inspector r(geom1, geom2)

d:id:yellow_73:20080117 を拝見してこの手の話題の需要を感じたので、エントリしてみます。

Osmxapi で任意地区の OpenStreetMap を HTTP 取得

OpenStreetMap には、任意地区のデータを HTTP GET で取得できる API があります。これを使って、小さな地域の OpenStreetMap を Shapefile として取得するスクリプトを作ってみました。

GeometryCollection から点と線を削除して MultiPolygon にする方法

標記のこと、buffer(0) でできることを確認しました。

単純化すると、データの一部の次元が落ちる場合がある

d:id:yellow_73:20071219#p2からトラックバックをいただきました。

Geo::FeatureList で MultiPolygon のあとに Polygon を書き込むと例外発生

id:yellow_73 さんのご指摘により、Geo::FeatureList で MultiPolygon を write したあと Polygon を write しようとすると、例外が発生することが分かりました。この問題の当面の回避策をご紹介します。

電子国土「背景地図の更新情報」を geotools.rb でハンドリング

電子国土「背景地図の更新情報」で公開されている情報を geotools.rb で受け取ってみました。

GeoTools で地球地図起源の海岸線データを単純化する その3

d:id:hfu:20071211, d:id:hfu:20071212 の続きとして、ポリゴンの単純化を実際にやってみました。

GeoTools で地球地図起源の海岸線データを単純化する その2

d:id:hfu:20071211 の続きです。地球地図日本バージョン 1.1 行政区画の Shapefile 版データ bnda.shp はなぜか 3D ポリゴン形式でしたので、これを 2D ポリゴンに直す処理をしています。(本題については、その3をご覧ください。)

GeoTools で地球地図起源の海岸線データを単純化する

id:yellow_73 さんのエントリから、ポリゴンを単純化する、というお題に需要があると読み取ることができましたので、GeoTools を使ってポリゴンの単純化を実際にやってみました。

Erlang 地図

本ブログ的な意味での Erlang 関係国の分布図を作りました。geotools.rb に Geo::create_lambert_conformal_conic_2sp_for(env) を追加しています。

JTS の Geometry#isWithinDistance は Geometry#distance に立つ瀬を奪われている

JTS のクラス Geometry には、isWithinDistance という、近辺データ抽出によさそうなメソッドがあります。しかし、isWithinDistance よりも、distance を使ってユーザコード上で距離を比較するほうが速い傾向があることが分かりました。

Geo::FeatureList に手を加えました。

Geo::FeatureList まわりを中心に、geotools.rb に細々とした変更を加えました。

Geo::FeatureList を作りました

geotools.rb に、Hash に基づく地物 (Feature) の Ruby 表現を前提とした新しい Shapefile 読み書きクラス Geo::FeatureList を作りました。Ruby のオブジェクトをそのまま Shapefile に保存できるようになっています。

ドイツの白地図操作ができるようになるまで

ベクトルデータを使って、ドイツについての主題図が作成できるようになるまでのステップをまとめます。geotools.rb を使ったスクリプトを含む、ちょっと長いエントリになっています。

LineString 近辺の点を拾い出すには、 distance を使う方が buffer + within よりも 10 倍速い

distance と within、どちらが速い? ある LineString から一定距離 d の中にある点を拾い出す処理を JTS / OpenGIS / ISO 19100 の Geometry を使って実現するには、例えば以下のような方法が考えられます。 [distance 法]LineString と対象点の距離を計測…

GeoTools (2.5) AbstractCoverage のメソッド実装状況

クラス AbstractCoverage は ISO 19123 CV_Coverage の実装を称するクラスですが、実際には開発版の 2.5 においても未実装のメソッドが多いことが分かりました。具体的には、未実装のメソッドを呼び出すと、java.lang.UnsupportedOperationException が投げ…

GeoTools には sun.jdbc.odbc.ee.DataSource を継承しているクラスがあり、このクラスは Mac OS X にとっては地雷

例えばこのクラス http://www.koders.com/java/fid241B86AE7B9D4C1996AACAC7004A12990A4EA4F5.aspx public class AccessDataSource extends sun.jdbc.odbc.ee.DataSource implements DataSource { 実際、 jirb でこのクラスを import しようとすると jirb も…

JRuby は確かに速い。でも Mac OS X で jirb に日本語が通らなかった...

iTerm を使っているのですが、jirb に直接日本語文字列を入力したときに日本語文字列が化けてしまう現象があって、これを解決する方法を見つけきれていません。 $KCODE = 'u' としたり、これを .irbrc に入れたりしたのですが、状況は変わりません。CRuby の…

JRuby は確かに速い。geotools.rb は JRuby 専用にしてもいい頃か

geotools.rb は今後 CRuby + Rjb 非対応に 実は、JRuby に移行する検討をした理由は、org.geotools.data.DefaultQuery を CRuby + Rjb に取り込もうとするとエラーが起きて ruby が終了することになったためでした。*1 今後、このクラス DefaultQuery を geo…

JRuby は確かに速い。(というか、私の場合は -O -J-server を知らなかった...。)

JRubyが遅いという話は過去のものになるかもしれません。 http://recompile.net/2007/10/trunkjruby.html を拝見して、改めて私の用途についてベンチマークを取り直してみました。 ベンチマークの内容は、 99819 レコードある Shapefile ファイルを読み、読…

Geo::HelmertTransform を廃止し、Geo::Transform.helmert を作りました。

でも、本当は、Geo::Transform::create_helmert を作るようにして Geo::HelmertTransform は存在しないほうがが良いのかもしれません。 ヘルマート変換クラス Geo::HelmertTransform を作りました。 - Relevant, Timely, and Accurate この改善を施し、Geo::…

ヘルマート変換クラス Geo::HelmertTransform を作りました。

Helmert transform ヘルマート変換 http://svgmapdata.sakura.ne.jp/geotools/classes/Geo/HelmertTransform.html もう少し手を入れるかもしれませんが、メソッド initialize のソース*1が意外と価値があるのではないかと思います。いろいろなパッケージに散…

geocoding.jp によるジオコーダ Geo::Geocoding_JP を作りました。

http://www.geocoding.jp/api/ を Ruby で使わせていただくクラス Geocoding_JP を作りました。5秒に1回以上のアクセスは避けましょう。 Geocoder by geocoding.jp geocoding.jp によるジオコーダ http://svgmapdata.sakura.ne.jp/geotools/classes/Geo/Geoc…

Ruby on GeoTools で距離計算 3

geotools.rb を使って二点間の距離を求める記事の第3回です。第1回、第2回で、 地点名 経度 緯度 渋谷のハチ公 139.700638888889 35.6590111111111 つくば市のエキスポセンターの H-II ロケット 140.111305555556 36.0862305555556 http://d.hatena.ne.jp/hf…

ドキュメントに加筆しました

http://svgmapdata.sakura.ne.jp/geotools/ に置いてある、geotools.rb の RDoc ドキュメントに加筆を施しました。 geotools.rb には、Geo::find_epsg_crs と Geo::find_epsg_code を追加しました。これらのメソッドについてのエントリはあとで書きます。