質問

私は「自分でやる」男ですが、噛むことができる以上に噛まれようとすることで自分自身をやらないようにしたいと思います。

エンドユーザーのマシンでスタンドアロン(インターネット接続なし)を実行するオプションが必要なブラウザベースのマッピングアプリケーションを作成しています。つまり、アプリケーションは何らかのサーバーであり、多くの場合、エンドユーザーのマシンにインストールされ、ブラウザはローカルホストURLを指してアクセスします。

クライアント側でMapLayersを使用します。サーバー側には、特定のカスタム方法でマップ上のクリックイベントを処理したり、特定の時間にマップ上にさまざまなカスタムオブジェクトを作成したりするなど、アプリケーションに固有のカスタムロジックの束があります。等々。

サーバーの「ビジネスロジック」部分については、PythonでPaste/Webobを使用してうれしいです。これは、このカスタムロジックをすべて簡単に入れることができるシンプルなインフラストラクチャです。

私は、クライアントが2つのサーバーと通信すると考えていました。このPaste/Webob Business Logic Serverと、WMSおよびWFSマップ要素を提供するためだけにサーバーです。だから私はマップパーツを処理するためにMapserverとGeoserverを見ていました...私は幸せではありません。

クライアントマシンに「獣」をインストールして心配する必要がないので、私は幸せではありません。 Mapserverの場合、Apacheのような本格的なWebサーバーを実際にインストールしたくないので、CGIとPHPとMapscriptを処理する必要があります。 Geoserverの場合、Javaを(潜在的に)インストールし、Geoserverのセットアップと管理のさまざまな複雑さを扱っています。

これの一部は、単に学習曲線の問題です。避けることができれば、MapserverまたはGeoserverの複雑さを学ぶことに特に興味がありません。 Geoserverをインストールし、データの一部に向けて、GeoserverのNice Web Adminに組み込まれたMaplayersプレビューを使用してデータを表示することができました。しかし、Geoserverを指し示している自分のMaplayers Webページを使用して実際にデータを提供しようとしたとき、Geoserverをクラッシュさせました。サーバーがクライアントからいくつかの奇形のリクエストを送信するだけでクラッシュできることは、私にとって非常に驚くべきことでした。そして私 できる Geoserverログを掘り下げて、私が間違ったことを把握しようとしますが、...私はそれに多くの時間を費やしたくありません。

そのため、すでに持っているペースト/webobサーバーを使用して、WMSおよびWFSインターフェイスの一部を自分で実装することを検討しています。実際には、クライアントにデータを渡すために作成するシンプルなカスタムプロトコルを介してベクトルオブジェクトを処理し、OpenLayersを使用してオブジェクトを直接作成および操作できるため、WMSのみが必要な場合があります。

WMSの仕様と例のメッセージを見ました(WFSでは少し少ない)。このプロトコルを自分で実装するだけではそれほど難しくないようです。特に、この場合はクライアントを完全に制御できるためです。一般的なWMSまたはWFSサーバーとして行動できる必要はありません。私は自分のOpenLayersクライアントを幸せにする必要があります。

WMSサーバーに必要な2つの主な能力は次のとおりです。

  • 事前に作成したプレレンダリングタイルのストアのタイルを提供します(OpenStreetMapデータを使用してタイルをプレレンダー、Mapnikをリデリングエンジンとしてプレレンダーします。通常のGoogle Mapsスタイルタイルタイル号命名スキームを使用して保存してアクセスできます。そのopenlayersが期待する)

  • 私がローカルに保存する特定のデータがタイルの上に描かれているこれらのタイルのバージョンを変更する機能を持っています。たとえば、たとえば、1つの「レイヤー」に10000ポイント、別のレイヤーに10000ポリゴンがあります。ユーザーがこれらのレイヤーをアクティブにすると、同じベースタイルを提供しますが、これらのタイルを提供しているときにレンダリングします。それらの上にこれらの追加機能があります。おそらく、これらの過剰レンダリングタイルをある程度維持するための簡単なキャッシュスキームを実装します。

私の質問は次のとおりです。これらのことを行う既存のツール(Mapserver、Geoserver、TileCacheなど)があることを知っていますが、実際には、単純なWMSメッセージに応答するだけでなく、実際にはあまり仕事ではないと感じています。 Pythonで自分のタイルでこれを追加することを行い、すべてが正しく投影されていることを確認します。これらの過剰な層、単純なライン、アイコン、おそらくラベルのために、派手な広い通りや何かを描く必要はありません。 Pythonのみのソリューションがあるのは、きれいで簡単に聞こえます。

より多くのWMS/WFSプロトコルのサポートに拡張する必要がある場合、またはよりファンシーなオーバードロウィングを行う必要がある場合、その時点でMapserver/Geoserverを挿入できます。

ここに私が考えていない落とし穴はありますか?

役に立ちましたか?

解決

Mapserverは、セットアップと学習が非常に簡単です。自分であらゆる種類のレンダリングを実装するには、さらに多くの努力が必要になります。おそらく、予想外のトラップがたくさんあるでしょう。

Mapserver CGIはお客様のニーズに十分である必要があります。非常に具体的な調整が必要な場合は、Mapscriptが役立つ場合があります。

純粋なJavaScriptアプリケーションを作成し、Webサーバー(およびマップサーバー)のインストールから自分自身を節約できれば、面白いと思います。タイルモザイクを閲覧する必要がある場合は、JavaScriptだけでそれを行うことができます(各タイルのセルを使用してHTMLテーブルを生成します)。 JavaScriptを使用して、キャンバスを使用してポイントまたはポリゴンをレンダリングし、基本的な座標変換を行い、地理的ポイントをピクセルに変換できます。 OpenLayersにはこの機能があると思います。

編集: 私はちょうどチェックしました OpenLayers ローカルタイルを閲覧することができ、KMLやその他のVECTデータをレンダリングできます。だから、私はあなたがオープンレイヤーを試してみるべきだと思います。

他のヒント

WMS/WFSを使用する必要はありません。必要なのは、タイルの実装です。基本的に、タイルを生成するある種の中央サービス、またはデスクトップサービスが必要です。これらのタイルが生成されると、それらを「No-Real-Webserver-Architecture」ファイルシステムに単純に変換できます。 /{x/ {y }/ {z }.pngに適合し、JavaScriptから呼び出すディレクトリ構造を作成できます。

OpenStreetMapがこれをどのように行うかの例は、ここにあります: http://wiki.openstreetmap.org/wiki/openlayers_simple_example

あなたはfeatureServerが好きかもしれません: http://featureServer.org/。独自のWFSがあります。私は今それを使っています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top