时暧其曭莽兮,召玄武而奔属。(虾神的话:有几个字我也不认识)
绘图包---- Turtle。Python是蛇,Turtle是龟,暗合道长道门天象,合该道长教大兴。
Python就不多介绍了,说说Turtle吧,Turtle最早是logo程序,所以运起来很傻白甜,当然很符合道长这种懒得思考的性格,Turtle绘图可以按照设定的步长和方向,进行路径跟随绘制,形成相应的图形,百度上有很多经典的绘图实例,比如希尔伯特曲线(Hilbert)....
既然Turtle能绘制图形,而道长经常和行政区划打交道,那么道长就想用Turtle绘制一个shp图层看看:
一个行政区划的面图层,就是有一定数量的拐点包围形成的,又因为shp有自己投影信息,因此拐点就有自己地理的定位信息,就是它们的经纬度,为嘛说这么多,纯粹为了凑字数噻。
既然拐点有自己信息,道长就能跟着拐点的序列进行跟踪绘制,那么问题就来了:
拐点的信息是经纬度,而Turtle的绘制规则是步长和方向,明显拐点的信息不能直接构成Turtle绘制的条件,所以道长需要一定计算方法,把点的信息转化成步长的和方向。
首先说步长,这个简单,有了A点和B点的经纬度信息,通过两点间的距离公式,就很方便计算噻:
手上没有尺子,临时用银行卡画一下,欢迎大家通过这张银行卡给道长卡里打香油钱,道长老司机会保佑你们轻松上路,啪啪无忧。(虾神的话:其实给我就可以了……道长不食人间烟火了)
好吧,回到主题,观察一下道长画的图,会发现之前计算的坐标方位角其实只是计算了A到B点的∠α1,线路从α到A到B,是有一个累计角的过程,就是A到B的方向是α到A的方向角减去A到B的坐标方位角,即∠α2 = ∠α3 -∠α1,∠α1就是AB的方位角,而∠α2就是道长要求的方向。
到现在,道长凑齐了,绘制面图层的两个要素,步长和方向,接下来,只是代码编写的过程了。正如道长之前所说的,Turtle的编写很简单: Turtle.goto(0,0) ##定位到初始点的位置 Turtle.speed(10) ##可以填写你要绘制的速度 Turtle.fillcolor('yellow') ##最后图形填充的颜色 Turtle.forward(15) ##填写的步长 Turtle.right(144) ##填写的方向的角度
虾神的话:我以人格保证道长的中左(中二)立场……)