WMSを使用したジオサーバーでのポイントフィーチャの消失


10

世界中に約6,500ポイントのシェープファイルがあり、WMSを使用してGeoserver 2.2.1で提供しようとしています。リーフレットを使用するクライアントアプリケーションにフィルタリング機能を実装するまでは、すべて問題ないようです。CQL_FILTER(空間ではなく属性フィルター)をWMSクエリに追加すると、ズームアウトすると機能が欠落していることに気付きました。ズームインすると、ときどき再表示されますが、常に表示されるとは限りません。下の画像を参照してください-

並べて比較

左側のズームレベルでは、アトランタは表示されません。ズームインするとそうなります。ただし、左側のズームレベルにタンパのポイントさえ表示されない場合があります。さらに3レベル縮小すると、ポイントがまったく表示されません。問題がCQL_FILTERパラメーターであるかどうかはわかりません。6,500ポイントでは、グローバルスケールでいくつかの欠落ポイントに気づくことは困難ですが、例としてここに示している特定のフィルターは、3つの機能のみにフィルターをかけます。特に目立つズームレベルによっては、1〜3個が欠けています。

高度なマップオプションのCQLフィルターを使用して、ジオサーバーの独自のレイヤープレビューでこれと同じ動作を再現できるため、クライアントアプリケーションではないことを確信しています。

この問題をデバッグするための私自身の手順については、デフォルトのポイントスタイル/ sldファイルを試して、自分のレイヤースタイルを除外しました。私が知っているすべてのキャッシュをオフにしました。プロジェクションが正しいことを再確認しました-プロジェクションとしてWGS_1984_Web_Mercator_Auxiliary_Sphereを使用してArcGIS 10でシェープファイルを作成し、ジオサーバーでレイヤーがEPSG:3857に設定されています。また、geoserver 2.2から2.2.1にアップグレードしましたが、両方で同じ問題が発生しました。ジオサーバーの空間インデックスファイル(.qix)も削除し、空間インデックスが破損しているArcで同様の問題が発生したので再作成しましたが、明らかにそれも機能しませんでした。

これは、CQLフィルターをオンにして、上に示したのと同じ領域に拡大した、Geoserverの独自のレイヤープレビューからのスナップショットです。赤い円は、ほぼ別の点(アトランタ)が見える場所です。

Openlayersの例

考えられる他のすべての設定を微調整してみましたが、うまくいきません。また、ジオサーバーログを調べて詳細ログを有効にしましたが、エラーや例外は表示されません。また、Chromeの開発者ツールに悪いリクエストはありません。

重要な情報が不足している場合は、できる限り提供しますが、これは内部/非公開アプリケーションです。


1
明白なものを除外する:あなたは、万が一、スケール依存のスタイルを持っていますか?(つまり、ポイントは特定のスケール間でのみ表示されます)
unicoletti '26

1
VENUE_TYPEの値が有効/一貫していることを確認できますか?一貫性のない結果が表示されるのは、(bboxのわずかな違いにより)異なる順序で返される機能が原因である可能性があり、そのうちの1つが何らかの方法で「悪い」ため、アトランタに到達する前にレンダリングが停止します。データを別のフォーマットにエクスポートすることをテストしてから、1)期待どおりに移動したすべてのものをチェックしてから、2)フィルター/レンダーを再テストすることをお
勧めし

1
@unicolettiスクリーンショットに表示されているレイヤーには縮尺依存がありますが、縮尺依存がないGeoserverが提供するデフォルトの「ポイント」スタイルを使用すると同じ結果が表示されます。縮尺依存がないため、まったく同じポイントが同じ縮尺で消えます。 。
MWrenn

1
@tomfumb VENUE_TYPE列の値を調べましたが、時々スラッシュ「/」またはアンパサンド「&」を除いて、すべて英語の英数字です。スラッシュとアンパサンドを使用してレコードを取り出し、違いがあるかどうかを確認します。補足として、このシェープファイルのDBFは、ジオサーバーでも設定したUTF-8でエンコードされています。それで違いはありますか?
MWrenn

4
@MWrennわからないので答えは出ませんが、データを別の形式にエクスポートすると、現在のストア/形式に問題があるかどうかを判断するのに役立ちます。おそらく、ArcMapまたはQGISでShpを開いて、領域をサンプルのbboxに制限してから、含まれているフィーチャの属性を調べてください。これらには、エンコーディングの影響を受ける可能性のある特殊文字が含まれていますか?
tomfumb

回答:


1

私が実装した「解決策」は、sq2pqsqlを使用してシェープファイルをpostGISデータベースにインポートすることでした。これにより、CQLフィルターを使用するときに消えるポイント機能が解決されました。まったく同じCQLフィルターリクエストを作成し、すべてのズームレベルですべてのポイントを確認できます。次に、シェープファイルの代わりにpostGISデータベースを更新するために、いくつかの自動化プロセスを微調整する必要がありましたが、数時間しかかかりませんでした。

ポイントフィーチャが消える根本的な原因はまだわかりません。さまざまなプロジェクションとシェープファイルライター(QGis、ESRI、shapefile.pyまたはpyShapeなど)を試しましたが、毎回まったく同じ結果が得られました。私はジオサーバーの専門家ではないので、バグと呼ぶのをためらっています。それはおそらく私のセットアップに特有のものですが、2.2と2.2を実行しているジオサーバーの2つの異なるコンピューターで実行されている2つの異なるインスタンスで再現できました。 1、両方ともWindows(One XP、Server 2003)。

ソースシェープファイルも投稿できないので、根本的な原因は謎のままだと思います。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.