|
|
|

从底层谈WebGIS(十七):WebGIS中间隔及面积丈量的原理和完结以及坐标转化的简略介绍

1.布景 在这一章里咱们将评论根底东西栏中别的两个常用东西:间隔丈量东西盒面积丈量东西。 间隔丈量东西要求完结如下功用: a.经过鼠标点击,在地必威现金回扣大将每个点击点连成线段进行表明 b.每个线段处表明出此线段代表的实践间隔 c.双击鼠标,中止此轮测...

作者:naaoveGIS/来历:naaoveGIS/|2014年12月14日

1.布景

在这一章里咱们将评论根底东西栏中别的两个常用东西:间隔丈量东西盒面积丈量东西。

间隔丈量东西要求完结如下功用:

a.经过鼠标点击,在地必威现金回扣大将每个点击点连成线段进行表明

b.每个线段处表明出此线段代表的实践间隔

c.双击鼠标,中止此轮丈量,表明出一切线段总长度

d.答应鼠标拖动地必威现金回扣

面积丈量东西的需求与丈量东西的需求大致相同,描绘为下:

a.经过鼠标点击,在地必威现金回扣大将点击点连成面

b.双击鼠标,中止此轮丈量,表明出面的总面积

c.答应鼠标拖动地必威现金回扣

2.从原理谈起

在完结上述需求时,咱们首要得了解此功用触及到的中心原理,其实就是咱们在初等几许中学过的间隔公式和面积公式。

这儿我先给出一个模型暗示必威现金回扣:

                       

2.1间隔换算公式

L(AB)= Math.sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));

2.2多边形面积换算公式

首要我直接给出公式:

S(total)=Math.abs(0.5*(x1*y2-y1*x2+x2*y3-y2*x3+….+xn*y1-yn*x1)));

这个公式到底是怎样推导出来的呢?我这儿跟咱们大致说下。

2.2.1 用坐标点表明三角形面积

 

咱们都知道三角形中最通用的面积公式:S=1/2*a*h。

在我之前的文章(存储进程判别两线重合点)里还说到过别的一个公式,海伦公式:

S=Math.sqt((p*(p-a)*(p-b)*(p-c))),其间p=1/2*(a+b+c)。

这儿咱们继续推导海伦公式,咱们现已知道A(x1,y1),B(x2,y2),C(x3,y3)。则:

a=Math.sqt((x2-x3)*(x2-x3)+(y2-y3)*(y2-y3)),b和c同理。

将用坐标点表明的a,b,c,p代入海伦公式,咱们可以得出面积在坐标系下的别的一个同等公式:

S= Math.abs(0.5*(x1*y2-y1*x2+x2*y3-y2*x3+x3*y1-y3*x1));

2.2.2 由三角形面积推导出多边形面积

如模型中,咱们在多边形内部设定一个P(x0,y0)点,经过P点衔接多边形中各端点,便可将多边形分割成(n-2)个三角形。

则多边形的面积变成了:

S(total)=S(PAB)+S(PBC)+S(PCD)+…+S(PNA);

将三角形的面积坐标公式代入,最终可以算出一个抵消掉了P点坐标的通用公式:

S(total)=Math.abs(0.5*(x1*y2-y1*x2+x2*y3-y2*x3+….+xn*y1-yn*x1)));

2.2.3留意

经过推导公式,咱们可以看出,该公式对环状多边形的面积无效。

3.完结进程

3.1 具体步骤

间隔量测和面积量测的完结办法上大致是相同的。

a.初始化三个参数,isDone为true,flag为false,isClick为false。

b.鼠标mouseDown时,首要判别done是否为true,假设是,则清掉地必威现金回扣上已有的制作。记载此刻的startPoint,而且给定三个参数,isDone为false,flag为true,isClick为true。

c.鼠标mouseMove时,判别此刻flag是否为true。假设是true,则触发平移功用。假设是false,首要判别isDone是否为true,假设是,先对之前一切的点进行清空重绘,再判别isClick是否为true,假设是,则跟着鼠标移动实时制作线段。

d.鼠标mouseUp时,记载此刻的endpoint,可以经过startpoint和endpoint算出此刻的线段长度。将flag变为false,即中止平移功用。

e.鼠标doubleClick时,将isDone参数改为true,flag改为false,isClick改为false。算出整个进程中的总间隔或许总面积。

3.2 留意问题

 因为此功用增加入了地必威现金回扣平移功用,所以在实时制作时,假设不留意很简单呈现制作点偏移问题。

 关于该偏移的引发,我在前面两章做了比较具体的解说,也供给了解决办法,咱们假设不是很了解,可以回头看看。

 在具体步骤中,我说到mouseMove事情中有个清空重绘进程,就是为了避免地必威现金回扣移动所照成的影响。一同,在每一个点的制作时,一定要减去总偏移量。

3.3作用展现

这儿别离给出间隔量测和面积量测的两个作用必威现金回扣:

 

4.进一步评论

以上,咱们给出的公式,均是针对平面坐标的,即做过投影转化的坐标。假设,咱们得到的坐标是经纬度坐标,此公式还能用么?

答案是不能。所以咱们得自己做投影转化,将经纬度坐标转成平面坐标。这类转化公式,触及的原理比较复杂,代码的完结也相对困难。

现在,我触摸过的转化有WGS84的,BeJing54的,XiAn80的以及一些当地自己的地舆坐标系,这其间还触及到四参数和七参数办法。具体的进程,在这个系列的今后章节我再跟咱们具体评论。

不过,在精度要求不高的状况里,咱们可以统一用Mecator(UTM)投影进行转化,而且运用四参数办法,将四参数固定即可。

5.总结

这一章里,咱们留了一个巨大的问题,即坐标转化问题。该问题是一个很大的学识,不过咱们可以一般性了解而且运用这方面的算法即可。鄙人一个章节里,我将跟咱们一同评论基本功用中剩余的别的两个功用,清空功用和地必威现金回扣定位功用。鄙人下章,咱们将一同评论基本功用中所触及到的比较难的一个功用,I查询功用,该功用的合理完结和合理展现均是需求细心琢磨的。欢迎咱们继续重视。

 

 --欢迎转载,但保存版权,请于显着处标明出处:

上一篇:从底层谈WebGIS(十六):WebGIS中偏移补偿…

下一篇:Android平台下根据SQLite的瓦片地必威现金回扣存储…