問題タブ [mapserver]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - PHPを使用してmapserverでクリックされたポリゴンを照会する方法は?
みんな。簡単な紹介をさせてください。
例: 私のマップサーバーはCGIモードを使用しています。という名前のシェープファイルが'us_states.shp'あり、その中に列'state_name'があります。正しい'.map'ファイルと'.html'テンプレートを作成した場合、「フォーム」タグのマップ イメージをクリックすると、米国の州の特定の名前が表示されるはずです。なぜこれが起こることができますか?「.html」テンプレートには文字列[state_name]があるためです。
ここで、いくつかの変更を加えます。
- 空間データはpostgreSQLデータベースにあり、という名前の列もあります
'state_name'。 - PHPを使用してクエリ マップを表示しています。
では、どうすれば の値を取得できます'state_name'か? クリックされた状態の色を変更するには?
私の進捗率:
- を。postgreSQL を使用して「.map」ファイルから元のマップ イメージを表示できます。また、イメージ内のすべての州の名前も表示できます。
- b. 単純な
'QUERYMAP'段落が「.map」ファイルに既に存在します。 - c. これらのコードを「.php」ファイルに追加しました。
$point->setXY($img_x, $img_y);
$map->queryByPoint($point, 'MS_SINGLE', -1);
$image=$map->drawQuery();
ただし、まず、画像の座標はデータベースの座標ではなく、データベースの座標も緯度または経度ではありません! それらを変換する必要がありますか?第二に、メソッド'queryByPoint'は状態名を取得できませんでした。使用する必要があります'queryByAttributes'か? それの使い方?
わからない... 本当にわからない... 助けてください。
php - mapserverのクエリステートメントにクエリパラメータを渡す
mapserver と openlayers を使用して GIS を作成しています。
PHP マップスクリプトを使用しており、クエリを満たすポリゴンのみが WFS レイヤーで強調表示されるように、html フォームからクエリのパラメーターを渡したいと考えています。
私はmapserver、openlayers、phpの初心者なので、上記を達成するために助けが必要です。
PHPマップスクリプトの上部に次のように表示されます。
URLにいくつかの変数を渡すために使用できると思います。フォームを使用しているため、$_POST代わりに... 正しいですか?
2 つの質問があります。
- 上記のコードを使用して、パラメーターを html フォームから mapscript に渡すにはどうすればよいですか
- これらをクエリステートメントに渡すにはどうすればよいですか?
私が求めていることが理にかなっていることを願っています
c# - mapscript を使用してレイヤ テンプレートを処理し、WMS GetFeatureInfo リクエストに応答する方法
C# mapscript を使用して GetFeatureInfo WMS リクエストを処理しようとしています。mapscript を使用する前は、当社のソフトウェアは IIS でホストされている CGI mapserver に WMS リクエストを渡していました。これにより、クエリされた各レイヤーに関連付けられた html テンプレートが処理され、テンプレート内の多数のトークンがデータに置き換えられました。
mapserver cgi 実装を使用できないため、C# mapscript メカニズムを介して mapscript を使用してこのメカニズムを再実装しようとしています。
これまでのコードの要約はこちらです。これの問題は、processQueryTemplate の呼び出しによって AccessViolation Exception がスローされることです。
関連するマップ ファイルは次のとおりです。
マップ ファイル内のさまざまな項目がトークン化されます (つまり、SQL プラグインの場所とデータに適用されるフィルター)。これは、前のメソッドの ProcessLayers への呼び出しによって処理されます。このメカニズムは、マップを描画するときに問題を引き起こすようには見えません。queryByPoint の呼び出しは機能します。これは成功を返し、SQL データベースに対して実行されたクエリは期待されるデータを返します。
ここからどこに進むべきか、テンプレートから出力を生成するために他に何をする必要があるのか わかりません。processQueryTemplate への呼び出しが、入力されたテンプレートを返すことを期待していました。また、 prepareQuery が何をするべきなのかよくわかりません。
乾杯
paste - WMS/WFS サーバー: 自分で作成するのは気が狂っていますか?
私は「自分でやる」タイプの男ですが、噛むことができる以上に噛むことで自分自身をやろうとしないようにしたい.
エンド ユーザーのマシンでスタンドアロン (インターネット接続なし) を実行するオプションが必要なブラウザー ベースのマッピング アプリケーションを作成しています。つまり、アプリケーションは、多くの場合、エンド ユーザーのマシンにインストールされるある種のサーバーであり、ブラウザーはそれにアクセスするために何らかの localhost URL を指します。
クライアント側で MapLayers を使用し、サーバー側には、特定のカスタム方法でマップ上のクリック イベントを処理したり、特定の時間にマップ上にさまざまなカスタム オブジェクトを作成したりするなど、アプリケーションに固有の一連のカスタム ロジックがあります。等々。
サーバーの「ビジネス ロジック」部分については、python で paste/webob を使用して満足しています。これは、このすべてのカスタム ロジックを簡単に配置できる単純なインフラストラクチャです。
私は、クライアントが 2 つのサーバーと通信することを考えていました。この貼り付け/webob ビジネス ロジック サーバーと、WMS および WFS マップ要素を提供するためだけのサーバーです。そこで、マップ パーツを処理するために MapServer と GeoServer を検討していましたが、満足できませんでした。
クライアント マシンに "獣" をインストールして心配する必要がないので、私は満足していません。MapServer については、Apache のような本格的な Web サーバーをインストールしたくありません。また、CGI と PHP と MapScript を処理する必要があります。GeoServer の場合、(潜在的に) Java をインストールし、GeoServer のセットアップと管理のさまざまな複雑さを処理します。
これの一部は、単に学習曲線の問題です。それを避けることができれば、MapServer や GeoServer の複雑さを学ぶことに特に興味はありません。私は GeoServer をインストールし、それを私のデータの一部に向け、GeoServer の優れた Web 管理に組み込まれている MapLayers プレビューを使用して私のデータを表示することができました。しかし、GeoServer を指す自分の MapLayers Web ページを使用して実際にデータを提供しようとすると、GeoServer がクラッシュしました。クライアントからおそらく不正な形式のリクエストを送信するだけでサーバーをクラッシュさせることができるということは、私にとって非常に驚くべきことでした。そして、GeoServer のログを調べて、何が間違っていたのかを突き止めようとすることもできますが、そのために多くの時間を費やしたくありません。
そのため、既に持っているペースト/webob サーバーを使用して、WMS および WFS インターフェイスの一部を自分で実装することを検討しています。実際には、WMS だけが必要なのかもしれません。クライアントにデータを渡すために作成した単純なカスタム プロトコルを介してベクトル オブジェクトを処理し、OpenLayers を使用してオブジェクトを直接作成および操作できるからです。
私は、WMS の仕様とメッセージの例を見てきました (WFS の場合は少し少なくなりました)。特にこの場合、クライアントを完全に制御できるため、このプロトコルを自分で実装することはそれほど難しくないようです。一般的な WMS または WFS サーバーとして機能する必要があるわけではありません。自分の OpenLayers クライアントを満足させるだけです。
WMS サーバーに必要な 2 つの主な機能は次のとおりです。
事前に作成したレンダリング済みタイルのストアからタイルを提供します (レンダリング エンジンとして OpenStreetMap データと mapnik を使用してタイルを事前レンダリングします。通常の Google マップ スタイルのタイル命名スキームを使用してそれらを保存し、アクセスしますOpenLayers が期待するもの)
ローカルに保存した特定のデータがタイルの上に描画される、これらのタイルの変更されたバージョンをサーバーする機能があります。たとえば、ある「レイヤー」に 10000 個のポイントがあり、別のレイヤーに 10000 個のポリゴンがあるとします。ユーザーがこれらのレイヤーをアクティブにすると、同じベース タイルを提供しますが、これらのタイルを提供するときにレンダリングしますそれらの上にこれらの追加機能を追加し、おそらく単純なキャッシング スキームを実装して、これらの過度にレンダリングされたタイルをしばらく保持します。
私の質問は、これらのことを行う既存のツール (MapServer、GeoServer、TileCache など) があることは知っていますが、実際には、単純な WMS メッセージに応答するだけの作業は少ないと感じています。 Python で自分のタイルにこの追加のオーバードローイングを行い、すべてが正しく投影されていることを確認します。これらのオーバーレイヤーには派手な広い通りや何かを描く必要はなく、単純な線、アイコン、およびおそらくラベルだけです。Pythonのみのソリューションを持つことは、確かに素晴らしくシンプルに聞こえます。
WMS/WFS プロトコルのサポートを拡大したり、より複雑なオーバードローを行う必要がある場合は、その時点で MapServer/GeoServer を挿入するだけでよいと思います。
私が考慮していない落とし穴はありますか?
android - Android でマップサーバーを使用する方法
Android で mapserver を使用できますか? タイリング、ズーム、パンを実装したスタンドアロン アプリケーションを作成したいと考えています。.map ファイルを毎回動的に操作する必要があります。アプローチの方法や、php mapscript を使用して mapserver を呼び出す方法を教えてもらえますか?
c# - WCF / WFS - ASP.NET
現在、私は Mapscript / Mapserver を使用しています。ASP.NET で WFS (Web Feature Service) を使用する方法を知りたいです。
私はWCFを使う必要があると思いますよね?チュートリアルやフレームワークはありますか?
ありがとう!
load-balancing - MapServer を使用した Ubuntu サーバーでの負荷分散
MapServer がインストールおよび構成された 3 台の Ubuntu 10.04 マシンがあります。これら 3 台のマシン間で負荷を分散する必要があります。さまざまな機能を備えたサードパーティのアプリケーションがいくつかあることがわかりました。MapServer で負荷分散を開始するための出発点として、特定の好みがある人やドキュメントに出くわす人がいるかどうか疑問に思っています。
前もって感謝します!
ムケシュ
mapserver - Mapserver : loadWeb(): 不明な識別子。(C):(行 1) 付近の解析エラー
私はマップサーバーを初めて使用します。私はサンプルアプリケーションを実行しました..
そして、私のHtmlファイルは次のとおりです。
一時フォルダに画像を生成しました。
「Click me」ボタンをクリックすると、「loadWeb(): Unknown identifier.」と表示されます。(C):(行 1) 付近の解析エラー
MapServer バージョン 5.6.6 を使用しています
誰か助けてください。
前もって感謝します。
google-maps - MapServerを使用したNAD83からWGS84
私はグーグルマップにWACオーバーレイを追加しているところです。
マップタイルはNAD83(lcc)で投影され、GoogleマップはWGS84(メルカトル)です。
WACタイルは、http: //map.aeroplanner.com/mapping/chart/smartchart.cfmにあるように、個々の領域に分割されているため、非常に多くのタイルがあります。とは言うものの、私は現在、1つのタイルでも配置する際に問題が発生しています。
ArcGISは、関連付けられたワールドファイルを使用してタイルを適切に表示するため、ワールドファイルは適切に形成されているように見えます。
LCC投影を使用し、タイルが埋めると予想される緯度/経度を設定すると、WACセクターを構成する北タイルと南タイルが相互に正しく位置合わせされます。
http://img716.imageshack.us/img716/1742/waclcc.jpg-この画像では、CF16 A&BとCF17 A&Bを見ることができます。投影は正しく機能しているように見えますが、位置が間違っています。絶対緯度/経度を割り当てる必要があります。これらを除外すると、MapServerがポジショニングエラーをスローするためです。
これは、上記の出力を生成するマップファイルのセグメントです。
レイヤータイプラスター名"16_40_NORTH"グループ"wac"データ"/opt / fgs / www / htdocs / WAC / CF-16 WAC 40 North.tif"
UTMなどの他のタイプのポジショニングでは、(線が水平でないという点で)誤った投影が提供され、同様に誤ったポジショニングが行われます。
絶対値が指定されているにもかかわらず、MapServerの位置が正しくないのはなぜですか。ArcGISはワールドファイルを使用してタイルを問題なく表示します。
MapServerのバージョンに欠陥がある可能性はありますか、それともマップファイルである可能性が高いですか?
postgis - Mapserver mapfile で WFS と PostGis を使用中に例外が発生しました
Mapserver によって生成された GML を使用して openlayers でポップアップを作成しようとしています。データソースが shp ファイルからのものである場合、すべて正常に動作していますが、postgis データソースは、「これはヒープの破損が原因である可能性があることを示しています。 HTTPFormServer.exe または読み込まれた DLL のバグです。」もう1つは、WFSではなくpostgisからレイヤーデータをレンダリングラベルに読み取った場合でも、正常に機能しています
何が起こったのか誰が教えてくれますか?
環境: mapserver5.6.1、postgis8.4、openlayers2.10