タグ付けされた質問 「antimeridian」

2
地理的データがantimeridianに及ぶデータベースおよびAPIのベストプラクティス
地理的特徴(ライン、ポリゴン、およびそれらの同等のマルチパート)がantimeridian(±180°経度)にまたがり、GeoJSONとしてクライアントWebアプリケーションに送信および受信する必要がある場合、それらを保存するためのベストプラクティスは何ですか? 私は、Postgres / PostGISデータベースのサポートを受けて、サーバー側のWeb APIで作業を開始し、熱帯低気圧の履歴と風の半径を予測します。太平洋の多くのサイクロンは、時には寿命の間に複数回、反時計回りを通過する不幸な傾向があります。 ニュージーランドのアンティリディアンの近くに住んでいる私は、地域のデータでこの問題に何度も対処し、対処戦略を立てましたが、実際にベストプラクティスと考えられるものを見つけたいと思います。残念ながら、antimeridianでタグ付けされた既存の質問はないため、関連する質問を検索するのは困難です。私がこの問題に苦労しているのを見た質問はすべて、非常にアプリケーション固有のアドバイスを求めているようです。この質問では、境界のない地球に広がるGeoJSONポリゴンの場合の反時計回りについて簡単に説明します。この質問は、私が尋ねていることにかなり近いものです。 空間的データベースに歴史的サイクロンと予測サイクロンを保存する必要がありますが、反時計回りに問題があると予想しています。たとえば、緯度/経度(0,179)で始まり、で終わる線(0,-179)は、その方向に関してあいまいです。それは、反時計回りを横切る短い経路を取るか、惑星全体を「包む」かです。このようなパスを空間データベースにどのように保存する必要がありますか(具体的には私はPostGISを使用していますが、ソリューションが十分に汎用的であることを望みます)。私が持っているいくつかのアイデア: フィーチャジオメトリに変更を加えず、クライアントアプリケーションへの曖昧さをシフトします。 antimeridianを横切るフィーチャを、antimeridianでブレークするマルチパートジオメトリに分割します。(GeoJSON仕様は名前付きCRSをサポートしています。) 仕事以外のグローバル予測などの不連続を持っていない別のサイクロン流域や海洋地域のために サイクロンが惑星全体を巡回することが一度も観察されていないという事実を利用して(90,-90) 、360°の位相でオフセットされた緯度範囲から始まるサイクロンの座標を保存します(他の-180-180°を維持) サイクロンがアフリカの南端の南にある可能性が非常に低いという事実を利用して、経度30°でブレークを使用します(上記のマップのように)。 座標がEPSG 4326の有効範囲を超えて拡張できるようにします。たとえば、反時計回りを通過するすべてのフィーチャに対して、180度以上-180度未満です。 TopoJSONと同様に、デルタエンコーディング(例:で始まり(0,-179)、次の座標は-3緯度西です)。PostGISにデータを保存するときにこれを実装するかどうか、または実装する方法がわかりませんが、これはクライアントアプリケーションにデータを送信するための優れたソリューションです。 何らかの形式のベクトル表記または極座標。(かなり難しくて珍しいようです。) これらのうち、アイデア2〜5は一般的なものではないので好きではありませんが、私の特定のアプリケーションにとって意味があるので好きです。太平洋のデータのみを処理するアプリケーションの場合、それらは非常に理にかなっている可能性があるため、オプションとして完全に割引したくはありません。 アイデア6および7は、Tom MacWrightのブログから取り上げられました。このブログは読む価値はありますが、反時計回りに関しては決定的なものではありません。 アイデア4はGeographicaGS 'GeodesicLinesToGISPythonによって使用されfiona.transform.transform_geom、360°の反時計回りオフセットで使用されています。次に、FionaはOGRを使用してい-wrapdatelineます。これは非常に堅実な先例であり、実際にはかなり一般的だと思います。 ストレージの問題に関連して、そのような機能をクライアントアプリケーションに送信する方法、およびアプリケーションがそこにポストバックされるデータを考慮する方法を検討する必要があります(たとえば、太平洋のサイクロンの予測トラックを変更する人間予報士)。交換形式はおそらくGeoJSONになりますが、そうである必要はありません。 残念ながら、GeoJSON仕様は、反時計回りの問題について明示的ではありません。ウィキペディアからこれ: 多くの地理的ソフトウェアライブラリまたはデータ形式は、世界を長方形に投影します。多くの場合、この長方形は180番目の子午線で正確に分割されます。これにより、180番目の子午線上で単純なタスク(エリアやラインを表すなど)を実行できなくなることがよくあります。いくつかの例: GeoJSON仕様では、仕様で180番目の子午線の処理に言及していないため、180番目の子午線を横切る線の表現は、世界中を回っていると解釈できます。 OpenStreetMapでは、領域(ロシアの境界など)は180番目の子午線で分割されます。 私の読書では、GeoJSONには反時計回りに広がる特徴の特定の標準表現はなく、意図的に曖昧なままになっています(マルチパートジオメトリによって問題が解決される可能性があります)。同様に、OpenStreetMapにはantimeridianにジオメトリ分割がありますが、そのような分割されたフィーチャがマルチパートであるか、実際に個別のレコードであるかはわかりません。 これは、特にバウンディングボックスまたはこの行にまたがる他の空間要求を作成するという観点からだけでなく、入力の解析とサニタイズおよびフィーチャジオメトリの更新においても、かなり問題があります。これが、私が従うことができるベストプラクティスを決定しようとしている理由です。

9
国際日付変更線の折り返し
OpenLayersを使用して、特定の日付内にラテンアメリカの国々に配置されたポリゴン(黄色)と交差するすべてのフィーチャ(黒)を返すフィルターを備えたWFSレイヤー(GeoServer上)を追加しました。 ただし、マップ上で水平に交差するフィーチャは、実際にはポリゴンと交差しません。この機能は、ラテンアメリカではなく、ハワイとフィジーの間の太平洋のどこかにあります。問題は、国際日付変更線を越える代わりに、全世界を包むことで地図上にレンダリングされることです。 problamatic機能が定義されています: POLYGON((-179.700417 14.202717、-178.687422 13.992875,179.024138 8.24716、-179.98241 8.035567、-179.700417 14.202717)) このような問題の多い日付変更機能が多数ありますが、この例ではこれに絞り込みました。私はそれらの多くを持っているので、私はちょうど私のアプリケーションでそれを無視することはできません。 ベースレイヤーとWFSレイヤーで「wrapDateLine:true」を使用して同じ結果を得ようとしました。 これがGeoServerの問題なのか、OpenLayersの問題なのかはわかりません。 私の国際日付変更線の問題の解決策を知っている人はいますか?

2
国際日付変更線を横切るポリゴン[-180 .. + 180経度]
衛星軌道帯用のポリゴンを生成しようとしています。これまでのところ、[lat、long]で各帯のエッジを表す2つの線を生成する方法があります。一部のスワスは国際日付変更線と交差しているため、次のように囲みます。 私はこれを解決することができましたogr2ogr -wrapdateline: ogr2ogr -wrapdateline -f "ESRI Shapefile" test.shp orbits.shp おそらく行を分割します 次に、両方の線の内側にポリゴンを生成できるようにしたいと思います。したがって、たとえば、スワスの1つのエッジが日付ラインと交差する場合、次のように、ポリゴンが反対側に現れたときに塗りつぶします。 タスクを何度も繰り返す必要があるため、自動化された方法が必要です。できればpythonで行を生成します。以下は、これらの行を含む2つのシェープファイルです。wraparound ; 固定日付

4
OpenLayersを使用した日付ラインの折れ線の分割
数年前、私は投稿の周り日付変更線ラップをし、@jdeoliveは、私は機能を分割提案日付変更線で。だから私は試しました。 日付変更線でsplitWithを使用して衛星トラックを分割しようとすると、戻りnullます。グリニッジラインで分割すると期待どおりの結果が得られるため、正しく分割していることがわかります。 OpenLayersを使用して、プログラムでLinestringを日付ラインに沿って適切に分割する方法を知っている人はいますか?もしあれば、サンプルコードを探します。 私は試しましたwrapDateLineが、ベクターレイヤーが次のようになっているにもかかわらず、ベクターレイヤーで動作していないようです: vectorLayer = new OpenLayers.Layer.Vector("GroundTracks", { renderers: ['Canvas', 'VML'], wrapDateLine: true}); // <-- shoud be wraping. これが私のコードです: var features = []; var format = new OpenLayers.Format.WKT({ 'internalProjection': map.baseLayer.projection, 'externalProjection': prjGeographic }); var satTrack = format.read("LINESTRING (95.538611 13.286511, 94.730711 16.908947, 93.901095 20.528750, 93.043594 24.145177, 92.150978 27.757436, 91.214579 31.364666, …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.