已知多个地理坐标,如何计算这多个点组成的多边形的面积?

tfp 2010-01-11 03:06:22
已知多个地理坐标,如何计算这多个点组成的多边形的面积?

目的是要测算出农场的面积公顷

http://local.wasp.uwa.edu.au/~pbourke/geometry/polyarea/

参考算法

可支付报酬,感谢关注
...全文
3291 45 打赏 收藏 转发到动态 举报
写回复
用AI写文章
45 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
[Quote=引用 43 楼 tfp 的回复:]
那这个程序怎么验收测试呢?
[/Quote]

看你的用户是什么群体了,如果是政府机构,自然可以找土地局要农场的面积(手工测量的),然后你放出一个beta版给用户,如果误差太大就分析原因,修改。主要是和用户之间的交流。

以上纯属个人看法。
xuelong_zl 2010-01-18
  • 打赏
  • 举报
回复
汗,学习一下
tfp 2010-01-15
  • 打赏
  • 举报
回复
那这个程序怎么验收测试呢?
tristan0602 2010-01-14
  • 打赏
  • 举报
回复
给的引文中的第一个公式应该就好用吧。每三个顶点构成一个三角形,每个三角形的面积和为:

两条边向量的叉乘。求和,即为公式1
  • 打赏
  • 举报
回复
[Quote=引用 41 楼 tfp 的回复:]
晕噢,如果差不多得话,那感觉有点悬


哪里可以搞到官方数据,测试用用,我有点纳闷,怎么算出每个行政区得面积得,还有国土面积???
[/Quote]

国家有专门的测绘局,国土面积不可能精确。

我觉得大尺度就要用卫星遥感影像,中等尺度就用航拍,小尺度就要人工用测距尺之类的手工测量。

指导原则就是误差在可接受的范围内。

一般地理数据都是保密的,如果商业化的话,一些gis公司也有。
tfp 2010-01-14
  • 打赏
  • 举报
回复
晕噢,如果差不多得话,那感觉有点悬


哪里可以搞到官方数据,测试用用,我有点纳闷,怎么算出每个行政区得面积得,还有国土面积???
  • 打赏
  • 举报
回复
我们农场那就是人工测量的,测量人员连几何都不太懂。

你这个需求到底是多大规模,误差能容许到多少?我觉得即使上万公顷,用前面的平面去近似也够了。

至于测试,我觉得没有必要,因为前面提出的方法都是严格符合几何的,误差就在于地球的球形和地面的不平整。

[Quote=引用 38 楼 tfp 的回复:]
还有个问题,怎么测试呢? 总不见得拿个皮尺去量这些点,然后在计算面积吧??
[/Quote]
tfp 2010-01-13
  • 打赏
  • 举报
回复

还有个问题,怎么测试呢? 总不见得拿个皮尺去量这些点,然后在计算面积吧??
xingzhe2001 2010-01-12
  • 打赏
  • 举报
回复
[Quote=引用 28 楼 tfp 的回复:]
还涉及把地理坐标转成平面坐标, 这个领域不太熟悉,所以来这拜托各位领域专家
[/Quote]
地理坐标是3维的?经纬度?经纬度的话肯定要转化为千米吧
tfp 2010-01-12
  • 打赏
  • 举报
回复
还涉及把地理坐标转成平面坐标, 这个领域不太熟悉,所以来这拜托各位领域专家
donkey301 2010-01-12
  • 打赏
  • 举报
回复
[Quote=引用 24 楼 tfp 的回复:]
引用 20 楼 donkey301 的回复:
引用 13 楼 tfp 的回复:
LS的靠谱,能否帮我下,你的这个用什么c,能跨平台么?


别管我的具体代码,你只要知道怎么算的,很容易就能写出一个类似的,14楼的联接你可以参考一下。


重复造笼子啊???

你帮我写了,才是资源最优化呀

  有酬,请速q我!
[/Quote]
16楼已经给你写完代码了,你直接可以用。
michael122 2010-01-12
  • 打赏
  • 举报
回复
3楼正解,而且复杂度也低
第一种方法实际上是积分
第二种更直观一些
两种方法都需要考虑面积的正负号
alphaxiang 2010-01-12
  • 打赏
  • 举报
回复
http://local.wasp.uwa.edu.au/~pbourke/geometry/polyarea/
原理:连接所有多边形定点与原点,根据三角形面积公式:S=a*b*Sin(C)/2

则三角形OPiPi+1的面积为:OPi*OPi+1 OPi,OPi+1为向量。积为向量外积Pi,Pi+1为顺时针时结果为正,否则结果为负
则逆时针绕多边形一周所有相邻向量积之和恰好为多边形面积。
xingzhe2001 2010-01-12
  • 打赏
  • 举报
回复
可不可以这样,找个参照物,比如一般电线杆的距离是100米,那么你根据这个可以计算一个纬度/经度是多长
xingzhe2001 2010-01-12
  • 打赏
  • 举报
回复
精确的不好弄了,要考虑地形的实际情况了,在高原肯定比在平原算得面积大
tfp 2010-01-12
  • 打赏
  • 举报
回复
so... 哪个可以用呢?

这代码要用在土地丈量上,最好给个标准专业的算法,别把农场面积少算了啊,

谢过啦
  • 打赏
  • 举报
回复
lz说不用三维

那计算时只能近似成球面转换长度,然后近似成平面计算面积了

事实上高高洼洼必然会影响面积

[Quote=引用 33 楼 mysword 的回复:]
哪有那么简单,地球不是完美的圆球

引用 32 楼 xingzhe2001 的回复:
那很好转阿,首先算出当地一个经度是多少千米,一个纬度是多少千米,然后坐标就出来了。
计算方法:
比如一个点的经纬度是(J,W),地球半径R
首先根据纬度算出纬圈的周长  C = 2*Pi*R*cos(W);
所以一个经度的千米就是 C/360
一个纬度的千米是2*Pi*R/360.



[/Quote]
gnefuil 2010-01-12
  • 打赏
  • 举报
回复
哪有那么简单,地球不是完美的圆球

[Quote=引用 32 楼 xingzhe2001 的回复:]
那很好转阿,首先算出当地一个经度是多少千米,一个纬度是多少千米,然后坐标就出来了。
计算方法:
比如一个点的经纬度是(J,W),地球半径R
首先根据纬度算出纬圈的周长  C = 2*Pi*R*cos(W);
所以一个经度的千米就是 C/360
一个纬度的千米是2*Pi*R/360.



[/Quote]
xingzhe2001 2010-01-12
  • 打赏
  • 举报
回复
那很好转阿,首先算出当地一个经度是多少千米,一个纬度是多少千米,然后坐标就出来了。
计算方法:
比如一个点的经纬度是(J,W),地球半径R
首先根据纬度算出纬圈的周长 C = 2*Pi*R*cos(W);
所以一个经度的千米就是 C/360
一个纬度的千米是2*Pi*R/360.



tfp 2010-01-12
  • 打赏
  • 举报
回复

用gps设备测出多个点的经度纬度, A,B,C,D,E,.. 然后求出这几个点组成的地区的面积公顷

三纬。。。 应该不用吧?
加载更多回复(24)
PART1 引入 因为刚刚沐浴完入学的洗礼晋级到新的级别不久,杂事挺多的,所以也没怎么逛论坛,距离上一篇 低多边形运动(LowPolyMotion)算法 的帖子发布至今也有挺长一段时间了没露面了。今天就再奉上一帖,和大家交流切磋。 刚正式接触线性代数这门学科不到两个月,觉得课堂上的线代实在枯燥。好在有幸遇见国外3Blue1Brown大神的线代解析,使得对线性变换的几何意义初有体会。在对这种美妙变换的感慨之余也不忘用自己动手,尝试独创算法实现这种变换的图形化渲染。 我将整个程序写成了可交互式的即时演算动画。 其实是个半半成品,嗯...主要原因是交互性还比较单一。 目前完成了基向量添加、自定义向量添加、矩阵×矩阵动画演算、矩阵×向量动画演算、两种副本网格模式、两种动画预览模式,上图演示的就是基向量和自定义向量的添加。其实单动画本身而言,除了好看和能够帮助更形象地理解线性变换以及明白低阶矩阵运算的几何本质之外也没啥别的意义了,但是这种交互式的编程动画还是挺有意思的,也有一定的学习价值,特此开源。 PART2 演示 ↑ 添加基向量与自定义向量 ↑ ↑ 观察基向量变换 ↑ PART3 简析 这一部分简单分析一下这个算法的内容,或者说解析一下源码吧,因为之前也有发一些这类的帖子,但是反应大多是看不太懂,因此我也打算在以后的帖子中都对源码做一下大致的剖析。要实现这种动画主要分成四大部分 来看,有兴趣的话就让我们就一起来看看吧。 一、坐标系部分 在这个项目中坐标系可以说是整个动画最有看的部分了。所有变换的美感都在坐标系网格的拉伸中体现得淋漓尽致。 1 .1搭建一个可变换的坐标系,即要搭建一个可变换的网格,网格由许多条横纵线条组成,为了绘制这些线条,我们只需要确定每一根线条的左右端的坐标 即可。此外我们还需要确定坐标轴的单位长度,以及坐标原的位置,为此,程序中定义了两个数据类型,用于存放坐标系的基本参数,分别是CoordinateSystemParam和CoordinateGroup。 通过画板的宽高和单位长度,不难确定Line_X和Line_Y的值,再设定一下颜色,通过循环调用画板的画直线命令很容易画出动图中的坐标系。 二、缓动函数部分 2 .1为了让我们的坐标系动起来只需要让端动起来即可,计算出运动的始末位置后利用循环的方法来达到缓动的目的。例如做一个循环n次使得P0从(x1,y1)位置运动到(x2,y2)位置的动画,只需要在第i次循环的时候将P0从x1位置移动到x1+(x2-x1)×k位置即可,其中k=i/n。 2 .2为了使得动画更加平滑,我们借助正弦函数对线性数据进行“软化”。 考虑到实际需求,我们仅截取正弦函数的[-π/2,π/2]区间。通过f(i)=π×i/n-π/2即可将i∈[0,1]映射到f(i)∈[-π/2,π/2],这样一来我们就可以得到sin(f(i))∈[-1,1],为了使得比例值k依旧从0开始到1结束,不难发现只需令k=[sin(f(i))+1]/2,即k=[sin(π×i/n-π/2)+1]/2 。这一技法贯穿整个程序动画,如果要实现更加复杂的缓动效果,可以参阅网上的其他资料,或调用现成的缓动函数。 三、向量箭头部分 3 .1两确定一条直线,那么如何画出向量的矢量箭头?本程序中使用在原直线两侧再画两根短线段的方法来实现,为了达到目的,只需要确定直线倾斜角α、箭头开角β以及线段长度L即可。L在图中没有标出,L=|P0P1|或|P0P2|。 以计算P1的坐标为例,首先α=arctan(y0/x0), 由几何关系不难发现∠EP0D=π/2-α-β,进而易得P1到直线DP0的距离d=Lcos(α-β),代入x1=x0-d得到P1的横坐标为x1=x0-Lcos[arctan(y0/x0)-β],同理y1=y0-Lsin[arctan(y0/x0)-β],考虑到L与β都是我们自定义的已知量,当P0确定后,P1与P2的坐标也就确定了。值得注意的是x=x0±d的正负号具体由箭头所处的象限来指定 ,具体规则见源码的CoordinateSystemDraw函数。 确定了箭头三的坐标后(P0,1,2),结合第二节缓动部分即可完成向量箭头的生成和移动动画。 四、运算表达式部分 4 .1运算表达式部分即矩阵乘法算式的动态显示部分。略,详见源码。 ↑ 观察自定义向量的变换(Vector的坐标跟随箭头所在处渐显)↑ ↑ 伸缩变换及张成空间的"降维" ↑
以太坊是一个平台,它上面提供各种模块让用户来搭建应用,如果将搭建应用比作造房子,那么以太坊就提供了墙面、屋顶、地板等模块,用户只需像搭积木一样把房子搭起来,因此在以太坊上建立应用的成本和速度都大大改善。具体来说,以太坊通过一套图灵完备的脚本语言(Ethereum Virtual Machinecode,简称EVM语言)来建立应用,它类似于汇编语言。我们知道,直接用汇编语言编程是非常痛苦的,但以太坊里的编程并不需要直接使用EVM语言,而是类似C语言、Python、Lisp等高级语言,再通过编译器转成EVM语言。上面所说的平台之上的应用,其实就是合约,这是以太坊的核心。合约是一个活在以太坊系统里的自动代理人,他有一个自己的以太币地址,当用户向合约的地址里发送一笔交易后,该合约就被激活,然后根据交易中的额外信息,合约会运行自身的代码,最后返回一个结果,这个结果可能是从合约的地址发出另外一笔交易。需要指出的是,以太坊中的交易,不单只是发送以太币而已,它还可以嵌入相当多的额外信息。如果一笔交易是发送给合约的,那么这些信息就非常重要,因为合约将根据这些信息来完成自身的业务逻辑。合约所能提供的业务,几乎是无穷无尽的,它的边界就是你的想象力,因为图灵完备的语言提供了完整的自由度,让用户搭建各种应用。白皮书举了几个例子,如储蓄账户、用户自定义的子货币等。 2013年年末,以太坊创始人Vitalik Buterin发布了以太坊初版白皮书,启动了项目。2014年7月24日起,以太坊进行了为期42天的以太币预售。2016年初,以太坊的技术得到市场认可,价格开始暴涨,吸引了大量开发者以外的人进入以太坊的世界。中国三大比特币交易所之二的火币网及OKCoin币行都于2017年5月31日正式上线以太坊。 [1] 自从进入2016年以来,那些密切关注数字货币产业的人都急切地观察着第二代加密货币平台以太坊的发展动向。作为一种比较新的利用比特币技术的开发项目,以太坊致力于实施全球去中心化且无所有权的的数字技术计算机来执行合约。简单来说就是,以太坊是一个你无法关闭的世界计算机。加密架构与图灵完整性的创新型结合可以促进大量的新产业的出现。反过来,传统行业的创新压力越来越大,甚至面临淘汰的风险。比特币网络事实上是一套分布式的数据库,而以太坊则更进一步,她可以看作是一台分布式的计算机:区块链是计算机的ROM,合约是程序,而以太坊的矿工们则负责计算,担任CPU的角色。这台计算机不是、也不可能是免费使用的,不然任何人都可以往里面存储各种垃圾信息和执行各种鸡毛蒜皮的计算,使用它至少需要支付计算费和存储费,当然还有其它一些费用。最为知名的是2017年初以摩根大通、芝加哥交易所集团、纽约梅隆银行、汤森路透、微软、英特尔、埃森哲等20多家全球top金融机构和科技公司成立的企业以太坊联盟。而以太坊催生的加密货币以太币近期又成了继比特币之后受追捧的资产。  智能合约的潜在应用很多。彭博社商业周刊称它是“所有人共享但无法篡改的软件”。更高级的软件有可能用以太坊创建网络商店。区块链程序以太坊可以用来创建去中心化的程序、自治组织和智能合约,据纽约时报的报导,在2016年5月已经有数十个可用的程序。预期的应用目标涵盖金融、物联网、农田到餐桌(farm-to-table)、智能电网、体育,菠菜等。去中心化自治组织有潜力让许多原本无法运行或成本过高的营运模型成为可能。较知名的应用有:去中心化创业投资:The DAO用以太币资金创立,目标是为商企业和非营利机构创建新的去中心化营业模式、The Rudimental让独立艺术家在区块链上进行群众募资。社会经济平台:Backfeed。去中心化预测市场:Augur。物联网:Ethcore(一间以太坊公司)研发的客户端、Chronicled(一间区块链公司)发表了以太坊区块链的实物资产验证平台;芯片公司、物理IP创建者和生产者可以用植入的蓝牙或近场通信进行验证。Slock.It开发的智能锁可以在付费后自动打开,让用户在付费后可以帮电动车充电、或是打开租屋的房门。虚拟宝物交易平台:FreeMyVunk。版权授权:Ujo Music平台让创作人用智能合约发布音乐,消费者可以直接付费给创作人。伊莫珍·希普用此平台发布了一首单曲。智能电网:TransActive Grid让用户可以和邻居买卖能源。去中心化期权市场:Etheropt。钉住汇率的代币:DigixDAO提供与黄金挂钩的代币,在2016年四月正式营运。Decentralized Capital提供和各种货币挂钩的代币。移动支付:Everex让外劳汇款回家乡。客户端软件以太坊的两个主要的客户端软件是Geth和Parity。企业软件企业软件公司也正测试用以太坊作为各种用途。已知有兴趣的公司包括微软、

33,007

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧