タグ付けされた質問 「spherical-geometry」

球形ジオメトリは、球の2次元表面のジオメトリです。

2
さまざまなGISシステムがポリゴンの内部をどのように決定しますか?
現実のGISシステムとそのデータがどのようにポリゴンをエンコードするかを理解することに興味があります。 具体的には、球体上のポリゴンの内部のあいまいさをどのように解決しますか? 背景:2Dでは、2D平面は無限であるため、有限の面積を持つ境界の側面を選択するのは簡単です。ただし、球体は有限であるため、追加の仮定を行わずにどちら側が内側にあるかを知ることはできません。 私が知っている可能なアプローチ: 右手規則:外部境界は常に時計回りの順序で指定され、穴は反時計回りの順序で指定されます。(もちろん、左手のルールもあります)。 最小面積:任意のリングに対して、常に最小面積の側面を選択します。広い範囲のポリゴンを指定する方法がわかりません:おそらく空の外部リングとそれに続く穴? 正距円筒図法:無限の2D平面上の正距円筒図法を単純に考えてください。ただし、これは機能が前科で切り刻まれていることを前提としています。 私の個人的な好みが最初のアプローチですが、これが標準のGISシステムで一般的かどうかを理解することに興味があります。

3
米国東部で最も遠隔地を見つけましたか?
私は、米国東部(ミシシッピ川の東)で最も離れた地点から50マイル以内で、最も近い道路の方向に移動し、道路を見つけることができるという予感を持っています。 定義: ほとんどのリモート:道路から最も遠い地点。道路:Googleマップの道路の定義。 どうすればこの主張を証明または反証できますか(つまり、米国東部で最も遠隔地はどこですか)。

1
地球全体をポリゴンとして表すにはどうすればよいですか?
これは、Polygonの内部の決定に関連しています。 私の問題は、東から西へと地球をカバーするポリゴンを指定した場合、方位角投影で表示される、アンテメリディアンに沿った境界が依然として存在することです。たとえば、GeoJSONの場合: { "type": "Polygon", "coordinates": [ [[-180, -90], [-180, 90], [180, 90], [180, -90], [-180, -90]] ] } 境界のない全球ポリゴンを指定する標準的な方法はありますか? 空の外部リングを使用することを考えました: { "type": "Polygon", "coordinates": [ [] ] } 全球ポリゴンにパンチする穴として、さらにリングを指定できるという論理です。 残念ながら、GeoJSONはLinearRingsには少なくとも4つのポイントが必要であることを規定しているため、これは仕様から逸脱します。ただし、このアプローチが他の場所で行われているかどうかを理解することにも興味があります。

1
不確実性を伴う方位角データを視覚化する方法は?
各点で不確実性の範囲が異なる方位角データを示す図を作成しようとしています。1991年の論文からのこのオールドスクールフィギュアは、私が目指している「ボウタイプロット」のアイデアを捉えています。 同様の図を作成する方法について何か提案はありますか?私はGISの初心者ですが、大学を通じてArcGISにアクセスできます。私のArcの経験は地質図の作成に限定されているので、あまりエキゾチックなことをする必要はありませんでした。 ArcとQGISのシンボルオプションをいろいろ調べてみましたが、その仕事をすると思われる設定は見ていません。これは、蝶ネクタイの形をしたシンボルを方位角で回転するだけの問題ではないことに注意してください。各「ボウタイ」の角度範囲は異なる必要があります。 私のPythonスキルは「強い中級」、Rのスキルは「中級」と評価しているので、必要に応じてmatplotlib、mpl_toolkits.basemapまたは類似のライブラリと一緒に何かをハッキングするのを嫌いません。しかし、聞いたことのないGISランドからのより簡単な解決策がある場合に備えて、その道を進む前にここでアドバイスを求めたいと思いました。

2
距離、方位角、傾斜角をXYZに変換する方法は?
ヘッダーと調査ドリルデータを含むExcelスプレッドシートがあります。ヘッダーデータには、穴IDと場所の座標が含まれ、調査データには、距離、方位角、および傾斜角の値を持つ関連するダウンホール調査が含まれます。 穴の位置と標高がわかっているので、測量テーブルもXYZ座標に変換できるようにしたいと考えています。誰かが機能/手順/例を持っていますか?(VBとArcObjects) ヘッダーデータ: 調査データ:

1
(大円)パス上のプロジェクトの場所
私はこのSEサイトをかなりの時間検索してきましたが、それでも私の質問の解決策を見つけるのに苦労しています。私の目標は、OSMの方法と私の場所(緯度/経度座標)を考慮して、その方法で最も近い場所(緯度/経度座標)を見つけたいということです。ポイントは、ウェイを定義するために使用されるポイントに限らず、ウェイ上のどこにでも置くことができます。 だから私は次のアルゴリズムを考えています: パスを別々のエッジに分離し、各エッジは2点のみを接続します。 最も近いエッジを選択します。 私の場所をその端に投影します。 ここで、場所とパスの間の距離の計算について多くの質問があります。 WGSポイントからWGSラインセグメント(大円)までの距離 ポイントと2つの緯度/経度の仮想線の間の距離を計算する 球の点からセグメントまでの距離を概算する方法は? また、非常によく似た質問で、計算を正しく行うことも検証することもできません。 直線上の最も近い点を見つける その主題についての数学博士からのいくつかの情報もあります。しかし、手順3で位置を計算するアルゴリズムを見つけることができないようです。(ベクトル)代数に触れていないので、これらの答えのロジックがよくわかりません。 誰かがこれを行うアルゴリズムを示すことができますか?適切なプログラミング言語での解決策は私には問題ありません。

1
球の可視性グラフを計算する
いくつかのポリゴンを含むPostGISテーブルがあります(geographyデータタイプを使用して保存されています)。それらは球形の地球上の領域を表しています。 すべてのポリゴンの中から選択した頂点のペアごとに、これらの2つの頂点が互いに「見える」かどうかを計算します。(n *(n -1)/ 2のペアがあります。ここで、nはテーブル内のすべてのポリゴンにわたる一意の頂点の総数です。 "お互いに見える"とは、 2つの頂点がテーブル内のどのポリゴンとも交差していません。 その計算を実行する最も速い方法は何ですか(できればPostgreSQL / PostGISで)。 うまくいくものを持っていますが、遅いです。私は単純にすべてのペアを反復処理し、それらの間のLineStringがポリゴンと交差するかどうかを確認します。(PostGISのgeographyデータ型は、球体に関するすべての難しい計算を処理します。)それで、速度を上げるかもしれない巧妙なデータ構造またはアルゴリズムがあるかどうか疑問に思います。

1
リーフレットのメルカトルバイアスプロット
私は、メルカトル図法のページからのこのウィキペディアの画像に触発され、リーフレットでハッキングしました。アイデアは、カーソルを大陸にインタラクティブに移動させ、それを投影に合わせて修正することでした。 ステータスの詳細については、次のJSFiddleを参照してください。 http://jsfiddle.net/cantdutchthis/NrAEL/1/ 私は投影の世界では少し新しいですが、デモは緯度に対して十分に機能します。私は比較すると正距円筒とメルカトル図法をウィキペディア私にあなたがこれらの二つの突起を比較したときの投影のバイアスが唯一の「y軸」であるという印象を得ます。 最初のウィキペディアの画像のため、経度を修正していないように見えます。これをサポートしたいのですが、これを行うための最良の方法が何なのかわかりません。 現在、メルカトル図法のバイアスを表示する方法は、マウスが移動するたびに座標をマウスカーソルにシフトすることです。 map.on("mousemove", function(d){ Object.keys(myLayer._layers).map(function(d){ myLayer.removeLayer( myLayer._layers[d] ) }) var plotCoords = []; // green is the coordinate array for the landmass var green = [ [-46.76373672, 82.62796021],... ] for ( i in green ) { // shift the landmass to where the cursor is var …


1
地球の表面に線が与えられた場合、それに垂直な線をどのようにプロットしますか?
地球の表面に線が与えられた場合、それに垂直な線をどのようにプロットしますか? これが非常に単純な質問である場合はお詫びします。これは簡単な作業だと思いましたが、直観に反していることがわかりました。 下の図の青い線から始めます(リンクを参照してください-まだ数値をアップロードできません)。青い線(m)の勾配を計算し、次に勾配-1 / mの別の線(緑)をプロットして、垂直線を見つけました。( 'plot'と 'axis equal'を使用して)Matlabで線をプロットすると、期待どおりに垂直に見えます。 http://imgur.com/7qMkx ただし、これらの線を(KMLツールボックスを使用して)Google Earthにエクスポートすると、垂直に見えなくなります(下のリンクを参照。短い方の線は前の図の青い線です)。 http://imgur.com/ncJQ7 曲面で奇妙なことが起こることは理解していますが、線は少なくとも局所的に垂直に見えるべきだと思いました。これはGoogle Earthの投影に関係しているのではないかと思います。特に、グリッドセルはほぼ同じ辺の長さを持っているように見えますが、縦の辺の長さは1度ですが、緯度の辺の長さは0.5です。程度。 つまり、要約すると: 垂線を見つける方法は曲面で有効ですか?(つまり、勾配-1 / mの線をプロットします) Google Earthの画像で、垂線が期待どおりに表示されますか、それとも何か奇妙なことが起こっていますか? 更新: より多くのコンテキストを提供するために:私は飛行機から取られたレーダーデータを見ています。マルチカラーの領域は、観測が記録されている「帯」です。上記の説明で始めた青い線は、スワスと平行です。これは航空機の飛行線です(飛行機はほぼ南西方向に動いていました)。レーダーは、左側の飛行線に直交する方向を向きます。私は飛行線に垂直な線を引こうとしています。これは、レーダーが見ている方向であり、帯をきれいにカットする必要があります。ご覧のとおり、そうではありません。

5
一連の緯度と経度の座標から中点を計算する
建物の輪郭を表す一連の経度と緯度の座標を取得しました 例えば -0.5485381346101759,53.2285150736142 -0.5482220594232723,53.22842450827133 -0.5482298619861881,53.22841205254449 ...(中間ポイントはリストされていません)... -0.5483123769301657,53.22882101914848 どのようにして中間点を計算できますか?3つの座標(例:http : //mathforum.org/library/drmath/view/68373.html)がある場合に、その方法を示すチュートリアルを見つけましたが、多くの場合、3つより多い。 ありがとうございました

2
GeoToolsとJTSを使用して点と線の間の垂直距離と最小垂直ベクトルを見つけますか?
2つの緯度/経度のペアで構成される線と、ポイントの緯度/経度があります。線と地球表面上の点(地球を大球体と見なすことができる)との間の垂直距離、および最小垂直ベクトル(つまり、線上に投影された「クロスポイント」)を調べたいのですが。 私はこれにGeotools 8.0とJTSを使用しようとしています。以下は私のテストコードをキャプチャしました: //Coordinates in lon, lat Coordinate linePt1 = new Coordinate(-5.71472, 50.06639); Coordinate linePt2 = new Coordinate(-3.07000, 58.64389); //Multiply all longitudes by the cosine of latitude. //http://gis.stackexchange.com/a/29713/10772 linePt1.x = linePt1.x * Math.cos(linePt1.y); linePt2.x = linePt2.x * Math.cos(linePt2.y); LineString line = createLine(new Coordinate[]{linePt1, linePt2}); Coordinate pt1 = new Coordinate(-6, 54); …

3
他の2つのポイントの中間にあるポイントを見つける方法は?
私はマップデータのOSMモバイルバイナリ形式の実装に取り​​組んでいます。ウェイに沿った各ポイントに16ビットのデルタを使用しているため、2つのポイント間に大きな距離がある場合、ウェイを表すことができません。 文書化された解決策は、ギャップを小さく保つために、新しいポイントをウェイに注入することです。 これが私のコードの関連セクションです: // calculate the distance between this point and the previous point, // multiplied by 1,000,000 so it can be represented as an integer. int32_t realNodeLatDelta = ((point.latitude - lastPoint.latitude) * 1000000); int32_t realNodeLonDelta = ((point.longitude - lastPoint.longitude) * 1000000); // cast as a 16 bit int (reduces …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.