頻繁に変更されるダイナミックマップサービスの例?


8

Webアプリケーションの要件は、タイマーで特定のダイナミックマップサービスを自動的に更新することです。

要件は、GPSセンサーから常に更新を取得する動的MSを使用するクライアントに関連します。

とりあえず、機能サービスと、頻繁に変更される可能性のあるWMSまたは画像サービスについては忘れましょう。

コーディングに関しては、これを実現するのはかなり簡単でした。

テスト担当者は、これがフロントエンドでどのように見えるかを確認できるように、頻繁に(理想的には少なくとも15秒ごとに)変化するダイナミックマップサービスを必要としています。また、クライアントに新しい機能を実証するのにも役立ちます。

Esriサンプルサーバーを調査していますが、見つかりません。

簡単なテストに使用できるような公共サービスを知っている人はいますか?

答えが「いいえ」の場合、おそらくいくつかのポイントの位置を変更し続けるために、GPS追跡の動きをエミュレートするスクリプトがそこになければなりません。次に、独自のサービスをセットアップします。


1
マップサービスの背後にあるデータはどこに保存されますか?SQL Server / Oracle、ファイルジオデータベースなどの上でArcSDEを話しているのですか?
チャドクーパー

上記のいずれかになります。テスト環境ですべての準備をします。新しい機能はこれらすべての環境に対してテストする必要がありますが、バックエンドで問題が発生する恐れはほとんどありません。
Simon

おそらくi2maps ncg.nuim.ie/i2maps/docs/index.php?page=examplesが役立つでしょうか?
radek 2011

リリース後は10.1で動作する必要がありますか?
カークカイケンダル

ArcGIS ServerのTracking Serverは必要ありませんか?esri.com/software/arcgis/tracking-server/index.htmlこれを行うには?
Mapperz

回答:



2

REST APIを使用している場合は、arcgisサーバーがなくてもこれを実行できるように思えます。地図のリクエストが来たら、REST API仕様に準拠しjson文字列を返し、新しい場所を表します。

Windowsでは、これはWCF Restサービスを実装することで実行できます。このサービスは、一連の車両をメモリに保持します。各車両には、位置、方向、速度、タイムスタンプが含まれます。リクエストがその場所に到着すると、最後のタイムスタンプからの経過時間に基づいて更新され、速度と進行方向に基づいて距離が相殺されます。

車両が道路をたどる必要がある場合は、各車両のパスをファイル(x、yおよび時間)にダンプできます。次に、RESTサービスはファイルを使用して、これらのパスに沿った位置の更新を返します。

クライアントは、15秒ごとにリクエストを行うタイマーが必要です。キャッシングを防ぐために、URLにタイムスタンプを含めます。

編集する

別の選択肢は、layerextensionを使用することです。ダミーのフィーチャレイヤーを指すmxdを作成します。ILayerExtensionDraw.BeforeLayerDrawが初めて呼び出されたときに、IFeatureLayer.Featureclassメモリ内フィーチャクラス(inmemoryworkspacefactoryを使用して作成)に置き換えます。ポイントフィーチャクラスは、車両の位置を表し、Heading、Speed、およびTimeStampのフィールドがあります。BeforeLayerDrawが呼び出されるたびに、場所は速度、方向、最後のタイムスタンプ以降の時間に基づいて更新されます。layerextensionにIPersistStreamを実装させることを忘れないでください。


非常に良い例です。私は過去2年間でこれを行いましたが、RESTはありませんでした。30秒ごとに各車からポーリングする車両テレメトリで更新するArcSDEレイヤーがあり、そのデータはすべてタイムスタンプされた値でポイントレイヤーに挿入されました。構成可能なウィンドウでマップコントロール(yes-ADFベース、問題あり)を更新し、動きとタイミングを確認できるように、最新の5つの車両情報ポイントを取得するメソッドがありました。PD / EMSで問題なく動作しました...
DEWright、2011

いいですが、後は​​何ですか。Esri APIを介して呼び出すことができるD-MSが必要です。その後、コードのどこかに、このサービスを再要求し続けるためにそれを用意しています。あなたの答えは私のテストのニーズに対して過剰に思えますか?
Simon

-1

ダイナミックマップサービスの性質は、リクエストごとにオンザフライでレンダリングされることです。クライアント側の変更を確認するには、新しいマップリクエストを発行する必要があります。

デフォルトでは、ArcGIS Serverを介してホストされるダイナミックマップサービスはデータに「スキーマロック」を配置し、サービスの実行中はソースデータを編集できません。

これは、マップサービス構成ファイル(.cfg)のプロパティを編集することで解決できます。<SchemaLockingEnabled>false</SchemaLockingEnabled>サービスの実行中にエントリがソースデータに変更を許可します。

http://help.arcgis.com/en/arcgisserver/10.0/help/arcgis_server_dotnet_help/index.html#//0093000000mr000000を参照してください


注:機能の更新が機能サービスを通じて行われる場合は、スキーマロックについて心配する必要はありません。また、フィーチャサービスを介してフィーチャ編集を送信することは、マップサービスの動的再描画をテストする優れた方法です。
アラン・アデア

アラン、この問題を解決する最良の方法は、SDE / DBソースからの空間ビューです。上記のテーブルをライブで更新し、新しいクエリが起動するとビューにヒットし、ソースレイヤーにヒットします。
DEWright、2011

これは、アーキテクチャの観点からは良いヒントであり、SimonがSDEを使用してデータを格納/取得する場合、動的マップサービスがクライアント側アプリケーションで適切にレンダリングされているかどうかをテストする別の方法になります。
アランアデア2011

別のクライアントには、現在の表示可能な範囲に基づいてオンザフライでポイントを作成するために使用するX / Y値があり、これもうまく機能しました。潜在的な可能性があるので、それをデモするための公衆向けサービスがあればいいのに。ただし、これらはすべて保護されている政府サービスであるためです。
DEWright、2011

この例は機能するはずです:sampleserver3.arcgisonline.com/ArcGIS/rest/services/Fire/Sheep/… これは、SilverlightインタラクティブSDKを使用して編集できるサンプルサービスです。まだまだあると思います。help.arcgis.com/en/webapi/silverlight/samples/…–
Allan Adair
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.