ESRI提供了指导,就如何使径向流图,但我认为,曲线将只生产了很长的距离,像半个地球。
对于短距离(20公里),大地测量线可能仍会看起来很笔直。为了继续在短距离上使用此过程生成径向流图,我想我们可以编辑基准设置,以使地球更小,因此可以在很短的距离上获得一条漂亮的曲线。有人知道怎么做吗?
另外,ArcGIS Desktop 10.0中是否还有其他工具可用于制作曲线?我有90个点,我最多需要连接54个点,所以自动化它比手动绘制线条要好。
ESRI提供了指导,就如何使径向流图,但我认为,曲线将只生产了很长的距离,像半个地球。
对于短距离(20公里),大地测量线可能仍会看起来很笔直。为了继续在短距离上使用此过程生成径向流图,我想我们可以编辑基准设置,以使地球更小,因此可以在很短的距离上获得一条漂亮的曲线。有人知道怎么做吗?
另外,ArcGIS Desktop 10.0中是否还有其他工具可用于制作曲线?我有90个点,我最多需要连接54个点,所以自动化它比手动绘制线条要好。
Answers:
这是我在上面的注释中提到的工作流的图示,尽管我不知道有任何简单的预装例程可以执行此操作,但我附加了一个excel电子表格,可以导入一组原点-目的地坐标并然后,工作表会生成一组或圆形的线坐标(此处为电子表格)。它已经设置了公式,因此很容易导入新的OD坐标并扩展公式以填充结果,但是我将更明确地介绍该过程的逻辑,其他人则可以提供建议如何完全在其中编写脚本ArcMap(或其他)。
简而言之,我认为这对于可视化OD数据是合理的,主要是因为大圆线很受欢迎,它们提供了线之间的更多视觉区别。我建议的方法相对于大圆线也有一个优势,因为流的方向编码在半圆中。在该站点的其他答案中,我给出了用于流图的可视化技术的更一般的概述,除了制作这样的弧线之外,还可以应用许多相同的技术。
因此,要详细说明如何像我建议的那样画线,本质上我只需要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)找到流的中点和距离。这非常简单,对于仅一组成对的坐标,(x,y)坐标的中点将为(x1+x2/2,y1+y2/2)
。所以,让我们定义mid_x = (x1 + x2)/2
和mid_y = (y1 + y2)/2
下一个零件。使用毕达哥拉斯定理的距离很简单distance = SQRT((x1 - x2)^2 + (y1 - y2)^2)
。
3)然后,根据给定的信息,绘制预先指定的度数和半径(是两点之间距离的一半)上的圆。例如,假设我们从处的一组OD坐标对开始(1,3):(3,2)
。以度为单位的方向为〜116(以弧度为单位〜2),x,y中点为(2,2.5)
,两点之间的距离约为2.2。
假设我们要绘制180度左右的半圆。在pseduo代码中(使用我已经定义的变量),迭代看起来像;
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处结束,以确保存在点和终点在同一位置。将环路调整为具有更多阶跃(更详细的弧线)或更少(较少详细的弧线)应该是显而易见的。
注意,站点上的其他线程讨论了根据点数据创建线的方法(请参见polyline-creation标签)。我在随附的xls电子表格中有一个示例,并且利用ET Geo-wizards arcmap工具将电子表格坐标转换为shapefile线。所附电子表格中示例数据中的弧线如下所示;
对当前设置的一个简单但可能有用的更新将是更新公式,以允许预先指定的圆弧偏心率,尽管到目前为止我还不太确定如何做到这一点。我期待社区的建议和反馈。