小さなWebマッピング/マップタイルサービスの作成


26

1つ以上のポリゴンシェープファイルをオンラインで(正確には、既存のマップサーバーインフラストラクチャのない地方自治体のWebサイトで)表示するための小規模で簡単な方法を探しています。現在、私はすべての作業をQGISで行っており、すべてのオープンソースを使い続けたいと考えています(大きなソフトウェア投資のための予算はありません)。

このトピックを研究した結果、圧倒的な数の可能なアプローチが生まれ、非常に混乱しました。私が探しているのは

  • 分類されたポリゴンをテーママップに表示できる(-可能であれば、ポップアップを表示するか、属性情報を取得できると便利ですが、これは非常にオプションです)
  • QGISでほとんどの作業(スタイリングなど)を行うことを好む
  • 基本マップとしてのOSMは完全に問題ありません

これまでのところ、OSMベースマップ上のカスタムマップタイルは私が探しているもののように見えます(またはより良い解決策がありますか?)これらのタイルを作成する最良の方法は何でしょうか?


2
ラスターベースの(Webタイル)ソリューションである必要がありますか?ベクターソリューションで大丈夫でしょうか?
マッパーズ

いいえ、まったくありません。私はちょうどそれが最も簡単な方法であると考えました(タイルを作成し、index.htmまたはコードブロックを作成して既存のWebページに貼り付け、サーバーディレクトリにコピーします)。私は以前、プライベートプロジェクトでGMapCreatorを使っていましたが、それは物事を成し遂げるための非常に迅速な方法でした。
サンダーカ

シェープファイルにはいくつのポリゴンがありますか?1000未満の場合、ベクトルソリューションに関する@Mapperzのコメントが役に立つかもしれません。最も簡単な解決策は、Google Maps APIを使用してポリゴンを描画し、情報ポップアップウィンドウを作成することです。非対話型のタイル画像を作成して保存する必要はありません。地図のタイル画像は、衛星画像、道路、または国勢調査区域の境界を表示するなど、非常に高密度の情報に最適です。
b_dev

回答:


13

QGISから開始する簡単な方法として、通常のQGISインターフェイスを使用して設計したマップを提供できるQGIS Mapserverを使用できます。あるいは、Javaベースでおそらくインストールがより簡単なGeoServerを使用することもできます。どちらのプログラムもオープンスタンダードを使用してマップを提供するため、どちらか一方から始めて後で切り替える必要がある場合、クライアントを変更する必要はありません。

WMSマップを提供するようにシステムをセットアップしたら、クライアントフロントエンドが必要になります。OpenLayersは、使い始めるのが非常に簡単で、簡単に拡張できるためお勧めします。WMS、WMST、OSMタイルを問題なく処理します。

最終的には、WMSレイヤーのタイルに移動する必要がある場合があり(合理的なハードウェアで1分あたり50〜100件以上のリクエストを取得する場合)、マップサーバーの前にタイルキャッシュを配置することを検討します。GeoServerを使用した場合は、組み込みのGeoWebCacheを使用するか、TileCacheを使用できます。


私の問題は、現在、市政内でフリーランスのアドバイザーとして働いていることです。地元のITスタッフは非常に厚く、あらゆる種類の「疑わしい」オープンソースを自分のマシンから遠ざけようとしています(私はQGISとの長い長い戦いを戦いました)。したがって、自治体のウェブスペースに「ソフトウェア」としてインストールする必要のあるソリューションは避けたいと思います。
サンダーカ

私の夢の解決策は、私が自分で準備し、彼らのウェブスペースにコピーし、html / JS-codeに挿入して完了することです。ラスターデータであるかベクターデータであるかは、最終的には重要ではありません。とにかく、技術的な違いを理解しているのは私だけです...そして、他のすべての人が気にするのは、市民のためにデータを簡単に表示できることです。
サンダーカ

1
ウェブマッピングはソフトウェアなしで簡単にできることではないことを説明する必要があります。確かにいくつかの単純なタイルをWebサーバーに投げることはできますが、すべての縮尺で見栄えはよくありません。維持するのは難しく、市長がもっと欲しいときに機能を追加するのは困難です。
イアンタートン

そこで、Geoserverを(Open Geo Suiteパッケージの一部として)調べましたが、見た目はとても良いです。シェープファイルをインポートし、スタイルを設定し、ローカルホストでプレビューを実行しました。しかし、どのように私のウェブスペースでこれらの地図をオンラインで入手できますか?何か不足していますか?ブックマークなどは明らかに私のローカルハードドライブを参照しているので機能しません。私は考えられるすべてのチュートリアルとハウツーを自分のやり方で進めましたが、そのトピックは議論されていないようです?誰かが私を正しい方向に向けることができますか?
サンダーカ

GeoServerをWebサーバーに配置し、ローカルマシンからリモートマシンにデータディレクトリをコピーします。
イアンタートン

8

分類されたポリゴンをテーママップに表示できる(-可能であれば、ポップアップを表示するか、属性情報を取得できると便利ですが、これは非常にオプションです)

QGISでほとんどの作業(スタイリングなど)を行うことを好む

基本マップとしてのOSMは完全に問題ありません

これはすべて、QGISとogr2layersプラグイン内で実行できます。ワークフローは簡単です:

  1. QGISでデータをスタイルします。プラグインのNew Symbology使用時に問題が発生したため、古いシンボルを使用しogr2layersます。

  2. ogr2layersプラグインを起動し、openlayers設定(マップサイズ、マップコントロール、ベースマップなど)を定義します。これにより、ファイルindex.htmlとして変換されたデータレイヤーとデータレイヤーを含むディレクトリが作成されgeojsonます。

  3. ディレクトリをウェブサーバーにアップロードします。

これは単純なWebマップ専用であることに注意してください。カスタムベースマップやその他のWebマッピング機能を作成するには、iantとPeterの回答をご覧ください。


1
シンプルなウェブマップは、ズームとスクロールが可能なことを意味します。それは、オフィスに戻ったときに調べる必要があるように思えます。
サンダーカ


6

別のオプションは、TileMill -それはと呼ばれるプロトCSSの言語でのスタイル定義を含むWebベースのインターフェイス、使いやすいでタイリング、相互作用や地図作成をサポートしていcascadenikを。TileMillを使用して、アウトクランク可能mbtilesのようなもので消費することができるファイルTileStreamを。ただし、マップされた出力の展開にはまだいくつかのトリックがありますが、これは高品質のタイルを生成するための素晴らしいプラットフォームを提供します。


フロントページで彼らのデモビデオを見て、それは非常に印象的です!
joshdoe

6

タイルマップサービスに最終的に行った方法に関する情報を提供することにしました。純粋なJavaScriptとGeoJSONは、約40kのポリゴンと33kのポイントを処理する必要があるため、ソリューションではありませんでした。それで私はタイリングに行きました。ああ、まだルートサーバーにアクセスできないので、GeoServerなどをセットアップすることはできません(現時点では、単一のクライアントでは経済的に実現できないでしょう)

いくつかの調査と読書の後、私はついにOpenLayersに落ち着きました(GMapsでいくつかのショーをした後)。Eric Hazzardのすばらしい本「OpenLayers 2.10」(Packt Publishing、2011)は、JavaScriptの基本とデバッグのヒントもカバーしているので、本当に助けになりました。

もちろん、私はすべてのベクターデータをQGISで処理しました。これは間違いなく、私のような小さなフリーランスに行くための方法です(大学のArcGISスタッフもかなり知っていますが、QGISはこれまで必要だったすべてを提供してきました)。

マップのスタイル設定とタイルの作成は、より大きな課題でした。最初に、CASAの「GMapCreator」を使用しましたが、複数のシェープファイルを階層化するのは面倒であることがわかりました(ポリゴン上にポイントデータを提供し、次にすべてを囲む市町村の境界線を提供する必要があります)。GMapsCreatorでこれを行うことは絶対に可能です(そしてショーケースステージでそれを行いました)が、完全なレンダリングサイクル3回かかります(最初にタイルを作成してから、既存のタイルを後の機能で「オーバードロー」します-正しい順序でレンダリングします)重要です!)、およびスタイリングメニューは少しかさばり、混乱を招きます。マップを保存して後で編集することも複雑な問題です。

TileMillは非常に有望で、特にCSSのようなスタイリングでしたので、調べました。残念ながら、それはMacまたはLinuxのみであるため、一部の人を怖がらせるかもしれません。私は見たものが本当に好きだったので、ハードドライブにUbuntuパーティションをセットアップし、ダウンロードして、マップのスタイルを整えました。スタイリングの構文に関するドキュメントは少し不足する場合がありますが、デモビデオ(メインサイトにリンクされています)を見るとほとんどすべてに答えることができます。ネストされたスタイルや条件付きスタイルを使用していくつかの興味深いことを行うことができ、いくつかの基本的なCSSの理解により、目的の場所に移動できます。

最後に、TileMillは素敵な単一の* .mbtilesファイルをレンダリングします。OpenLayersでこれらを直接表示する方法はないと思うので(少なくとも1つが見つかりませんか?)、別のツールmbutilを使用するときが来ました。このツールは、mbtiles-Fileを、選択したズームレベルのデータのタイルpngを含む通常のフォルダー構造に「解凍」します。

最後に、これらすべてのファイルをFTPサーバーにアップロードし、OLを読んでWebマップを起動します(作成したタイルをTMSレイヤーとして追加しますが、正しいソースURLとレイヤー名を推測するには時間がかかり、グーグル)してから、基本的なhtml / CSSの問題をいじって数時間燃やしました。私は、クライアントの「企業」(前述のように自治体です)アイデンティティガイドラインに沿って、フローティングレジェンドの100%幅/高さマップが必要でした。

ああ、これまでのところ私はベースレイヤーとしてGoogleマップを使用していますが、それはすぐにWMS経由で提供されるいくつかのカスタム航空写真に置き換えられるかもしれません(私は提供しませんが、州の調査と地理データ管理)。

重要なことは忘れないでくださいと願っていますが、もし忘れた場合はお気軽にお問い合わせください!時々このスレッドをチェックします。


TilemillはWindowsでも利用できるようになりました。Openlayers Usersメーリングリストには、mbtilesをデータソースとして使用することに関する比較的最近のスレッドもあります(試していません)。
マットウィルキー

ああ、ありがとう、知っています。間違いなくそれを試してみる必要があります。win7とubuntuを常に切り替えるのは少し面倒です。
サンデルカ

3

1000個未満のポリゴンがある場合は、ベクトルソリューションに関する@Mapperzのコメントを検討してください。ポリゴンが数個しかない場合は、非インタラクティブなタイル画像を作成して保存する必要はありません。

タイル画像は、衛星画像、道路、または50,000人の国勢調査ポリゴンを表示するなど、非常に高密度の情報に最適です。

少数のポリゴンに対する最も簡単な解決策は、シェープファイルをKMLに変換し、Googleマイマップにアップロードすることです。

Javascriptでコーディングする場合、最もインタラクティブなソリューションは、ポリゴンを描画して情報ポップアップウィンドウを作成するGoogle Maps API(またはOpenLayers)です。GDALライブラリを使用して、シェープファイルポリゴンをgeoJSONファイルに変換することから開始できます(地理情報を格納するJavascriptの方法)。

または、タイルルートを使用した場合、社内での煩わしさなしにタイルをAmazonsまたはGoogleのクラウドに保存できます。

このテーママッピングのブログエントリには、検討中のタイルアプローチに対するベクトルアプローチの利点がまとめられています。

がんばろう!


単一のビューでベクトルとして扱われる約500ポイントが、クロールまで物事を遅くする傾向があることがわかりました。500ポイントを超えるすべてを並べて表示します。
ミカリスアヴラム

1

私は同じ結論に向けてゆっくりと私の道を進んでいるので、私はあなたの仲間を感じています。QGISを学んだ後、quantamnikとmapnikを試しました。ただし、qgisのスタイリングを片道で移植し、スタイリングシステムを1対1でアレントするため、とにかくmapnikスタイリングを学習する必要があります。同じことがqgis mapserverエクスポート関数にも当てはまると思います。mapserverのスキルを向上させる「簡単な方法」はないようです。

Mapnik、geoserver、mapserver、それぞれの信者がいるように見えますが、mapserverは中道のようです。

私が見つけた1つのショートカットがあり、それがqgisであると言って、qgisマップを解像度と選択した範囲にラスタライズし、ワールドファイルを作成するコマンドラインオプションがあります。これにより、maptilerまたはgdal2tilesを使用して、一度に1つのレイヤーをタイルできます。20のズームレベルには明らかに良くないでしょうし、最大pngサイズの制限が何なのかもわかりません。


2
QGIS MapServerはMapServerとは異なります。
イアンタートン

2
この混乱の可能性があるため、QGISサーバーと呼ばれるべきです。
暗闇
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.