ArcGIS for Desktopを使用して、短距離(20 km)の曲線を示す放射状フローマップを作成しますか?


10

ESRIが提供している説明書ラジアルフローマップを作成する方法については、私は曲線が半分だけ世界のように、長距離を生産することになると思います。

短い距離(20km)の場合、測地線はおそらくかなりまっすぐに見えます。このプロセスを短距離のラジアルフローマップに使用し続けるために、データム設定を編集して地球が小さくなるようにすると、短い距離で素敵な曲線が得られます。誰でもこれを行う方法を知っていますか?

または、曲線を作成するために使用する別のツールがArcGIS Desktop 10.0にありますか?54ポイントまで接続する必要がある90ポイントがあるので、手動で線を描くよりも自動化した方がいいでしょう。


2
ArcGIS以外のコンテキストで、gis.stackexchange.com / questions / 5204 /…で質問が行われました。あなたは興味のある答えを見つけるかもしれません。
whuber

1
私はwhuberの考えとは違う考えを持っていましたが、彼はあなたの目標を考えるとより良いかもしれません。アークダイアグラムで行われているのと同様に、アークに任意の量の曲げを追加できると思いました。次に、流れの方向に応じて、頂点の方向を変更できます。基本的に、ワークフローは大円と同じです。ラインストリングを多数の小さな直線セグメントに分割します。任意の曲げは、ローカル投影に対応できます。
アンディW

@AndyW、あなたの提案は私にとってより有用に聞こえます(ただし、より多くのより多くのユーザーに優れた提案をするwhuberには害はありません)。whuberの提案を理解または実行できません。私は単純な「すぐに使える」ソリューション、できればArcGISエクステンションを求めています。アーク図を見たところ、驚くべき例がいくつかありました。私の場合、立ち退きサイトと移転サイトの間の多対多(通常は1対多)の関係を示す単純な静的マップの解決策はありません。
ndthl 2012

回答:


5

これは、上記のコメントで述べたワークフローの図です。これを行う簡単な既定のルーチンはわかりませんが、一連の出発地と目的地の座標をインポートできるExcelスプレッドシートを添付しました。次に、シートはセットまたは円形の線座標を作成しますここにスプレッドシート)。数式が設定されているため、新しいOD座標をインポートして数式を拡張して結果を入力するのは非常に簡単ですが、プロセスのロジックをより明確に説明します。 ArcMap(または何でも)。

簡単に言うと、これは主に大円線が人気であるのと同じ理由でODデータを視覚化するのに合理的だと思います。線がより視覚的に区別されます。私が提案するアプローチには、フローの方向が半円でエンコードされるという点で、大円線よりも1つの利点があります。このサイトの他の回答では、フローマッピングの視覚化手法のより一般的な概要を説明します。このような弧を作成することに加えて、同じ手法の多くを適用できます。

したがって、私が提案しているように線を描く方法を詳しく説明すると、基本的にはプロセスに3つのステップしかない、1)流れの方向を見つける、2)中点と流れの距離を見つける、3)処理する中点を円の中心とし、円弧(起点から終点までの半円)を描きます。明確にするために、投影された起点座標(x1,y1)と終点座標のセットのペアから始め(x2,y2)ます。

したがって、1)流れの方向を見つけます。最初に式ATAN((y2 - y1)/(x2 - x1))を使用し、次に、方向に応じて、方向が東向きか西向きかに応じて方向を割り当てます。以下の疑似コードの例(両方とも同じ座標にあるODポイントにゼロの方向を割り当てます)。ここで、変数or_radは「ラジアンでの向き」の省略形であることを意味しpi、piの値を指します。

#tan_or = ATAN((y2 - y1)/(x2 - x1)).
Do If x2 = x1 and y1 <= y2. 
    compute or_rad = 0.
Else if x2 = x1 and y1 > y2.
    compute or_rad = pi.
Else if x1 > x2.
    compute or_rad = 270/180*pi - #tan_or.
Else if x1 < x2.
    compute or_rad = 90/180*pi - #tan_or.
End If.

2)フローの中間点と距離を見つけます。これは非常に単純です。1組のペアの座標の場合、(x、y)座標の中点はになります(x1+x2/2,y1+y2/2)。それでは、次の部分を定義mid_x = (x1 + x2)/2mid_y = (y1 + y2)/2てみましょう。ピタゴリウムの定理を使用した距離は単純distance = SQRT((x1 - x2)^2 + (y1 - y2)^2)です。

3)次に、その情報が与えられたら、事前に指定された度数と半径(2点間の距離の半分)上に与えられた円を描きます。たとえば、のOD座標ペアのセットから始めるとしましょう(1,3):(3,2)。度単位の方向は〜116(およびラジアン〜2)、x、yの中間(2,2.5)点は2つのポイント間の距離は約2.2になります。

それでは、半円を180度に描画するとします。pseduo-code(すでに定義した変数を使用)では、反復は次のようになります。

for i in (0 to 180 degrees) 
    rad_i = i/180*pi. /*converts i from degrees to radians
    step_or = pi - rad_i /*for clarity, this makes the circle go from origin to destination
    radius = distance/2
    Arc_X = mid_x + sin(or_rad - step_or)*radius.
    Arc_Y = mid_y + cos(or_rad - step_or)*radius.

以下は、上で指定した元の座標の図です。ゼロから始まり180で終わることで、存在ポイントと終了ポイントが同じ場所にあることを確認します。より多くのステップ(より詳細な弧)またはより少ない(より詳細な弧)を持つようにループを調整することは、かなり明白です。

ここに画像の説明を入力してください

なお、サイトの他のスレッドでは、ポイントデータからのラインの作成について説明しています(タグを参照)。添付のxlsスプレッドシートに例があり、ET Geo-wizardsアークマップツールを使用して、スプレッドシートの座標をシェープファイルの線に変換しました。添付されたスプレッドシートのサンプルデータの円弧は、次のようになります。

ここに画像の説明を入力してください

この現在のセットアップに対する1つの単純であるが潜在的に有用な更新は、数式を更新して弧の偏心量を事前に指定できるようにすることです。私のアドバイスについて、コミュニティからの提案やフィードバックをお待ちしています。


1
これは本当に素晴らしい反応です!コーディングの方法はわかりませんが、友達と話し合える良いことがあると思います。2つのポイントを直線で結ぶためのet geowizardsツールを知っています。地図作成の目的でのみ曲線に興味があります。
ndthl 2012
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.