2

OSM-Bright で使用する postgis サーバーのセットアップに成功しました。サーバーは私にとって少しブラックボックスであることを認めなければならないので、セットアップして正常に動作している間は、最適な使用方法の詳細を知りません.

OSM-Bright の設定ファイルには、config["postgis"]["extent"] という値があります。コメントでは、データベースと同じ単位 (おそらく球メルカトル メートル) で「XMIN、YMIN、XMAX、YMAX」を使用して、地球全体から必要な領域だけに範囲を制限するクエリを高速化できると述べています。

私の質問は、これらの値を取得する簡単な方法があるかどうかです。

たとえば、ニューヨーク州ロングアイランドのナッソー郡のサブセットのみをマッピングする必要があるプロジェクトがあるとします。私の OSM DB には、米国北米全体のデータセットがあります。ロング アイランドの範囲をデータベースの投影法に合わせて簡単に変換する方法またはツールはありますか?

事前にご協力いただきありがとうございます。

乾杯、スティーブ

4

2 に答える 2

4

PostGIS/OSM-Bright/TileMill セットアップも使用しています (初めて)。OSM データを osm2pgsql でインポートしました。対象のテーブルはplanet_osm_polygonplanet_osm_pointplanet_osm_line、およびのようplanet_osm_roadsです。

次のようなクエリを実行して、各テーブルのエクステント値を取得できます。

SELECT ST_Extent(way) FROM planet_osm_polygon

または、範囲 (つまり、OSM データすべての境界ボックス) を取得するには、次のようなクエリを実行できます。

SELECT
  ST_Extent( way )
FROM (
  SELECT way FROM planet_osm_polygon
  UNION
  SELECT way FROM planet_osm_point
  UNION
  SELECT way FROM planet_osm_line
  UNION
  SELECT way FROM planet_osm_roads
) as foo;

これは、minX、minY、maxX、maxY の値を持つボックスを返します (例: BOX(739651.875 2908247.25,794875.8125 2970042.75)-> config["postgis"]["extent"] = "739651.875 2908247.25 794875.8125 2970042.75")。

于 2013-08-30T16:23:35.773 に答える
0

このページglobalmaptiles.pyのPython スクリプト(下にスクロールするとダウンロード リンクが表示されます) は、目的どおりに動作します。

その目的は、指定したポイントを含むタイルの座標を特定のズーム レベルで提供することですが、WGS 84 の入力を球メルカトル メートル (EPSG:900913) に変換します。

WGS 84 でバウンディング ボックスの座標を取得するには、Google Maps Lab の拡張機能である LatLng Marker または LatLng Tooltip を使用できます。

したがって、あなたの質問に正確に答えるために、ロングアイランドのナッソー郡の WGS 84 の境界ボックスは次のようになります (私が思うに):

  • 左上: 40.920、-73.761
  • 右下: 40.597、-73.415

上記のツールを使用すると、球状メルカトル メートルが得られます。

  • xmin、ymin、xmax、ymax: -8211036.960402652,5000548.83362593,-8172520.416588181,4953079.755896228

このようにバウンディング ボックスを使用すると、Tilemill でのレンダリングが大幅に高速化されます (もちろん、変更を有効にするには OSM-Bright を再生成する必要があります)。

于 2014-04-26T08:26:12.127 に答える