• 全部
  • 问答

各位大虾,请问如何计算带岛多边的中心点?

phoenixandlinda 2004-08-06 09:27:25
我在求取多边形(特别时有多个环-带岛)的“中心” 时,发现“中心”居然在多边形外部--岛的中间,然而我希望的算法是“中心”应该在环之间的某个位置,即多边形内部。我用Mapinfo软件导入自己的图形数据,计算出来的中心符合期望的结果。
我想我可能把这里“中心”理解错了,它并不是指几何中心。Mapinfo所指的“中心”是另有所指。
如图:中间的实心点是我求取出来的,环之间的那个空心点是Mapinfo计算出来的,我希望得到Mapinfo的那个结果,那个“中心”在环内。

/-------------------\
| |
| 。 /----\ |
| | | |
| | . | |
| \------/ |
\ /
-------------------
...全文
71 点赞 收藏 6
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
phoenixandlinda 2004-09-04
zzwu(未名)
说的不错,已经修改了算法,并且如果不在多边形内,取最接近中心的哪个“中点”
回复
zzwu 2004-08-18
你这样做就繁琐了一点.

可以直接对所有多边形来一起考察,用不到先求中心,然后判断该中心是不是在多边形内部,如果不是在内部,再....

例如,对下面的2个图形都适用的:

/-------------------\ Ymin
| |
| /----\ |
| | | |
--x--o--x------x-------x----------Ymean
| | | |
| \------/ |
\ /
------------------- Ymax

/-------------------\ Ymin
| |
| |
| |
| |
--x---------o----------x----------Ymean
| |
| ------ |
| | | |
| \------/ |
\ /
------------------- Ymax

其中x代表交点, o是第1和第2个交点的中点, 它必定在多边形内,而不会在岛上.


我介绍的方法我以前曾经编过程序,不会有问题,但要注意交点的统计方法.

回复
phoenixandlinda 2004-08-17
现在的实现办法是,结合了“: syy64(太平洋) 和zzwu”提供的方法,见(http://community.csdn.net/Expert/topic/3247/3247680.xml?temp=.5999414),和原来实现的中心的方法。
先求中心,然后判断该中心是不是在多边形内部,如果不是在内部,再运用两位大虾的方法,这样求出的“中心”将就着可以使用。
汗颜,数学、几何太差了。
该贴暂时不结,希望有更多、更热心的大虾提供帮助。
回复
phoenixandlinda 2004-08-10
谢谢帮忙,试一试,成功了就散分,没成,继续顶。
回复
phoenixandlinda 2004-08-06
我是自己在开发GIS系统,从底层做起的,希望各位老大帮忙。
回复
syy64 2004-08-06
我觉得应该是将外多边形与岛分成若干个闭合多边形,根据外多边形的范围设置一条平行于X轴的直线,求出这条直线与这些多边形的交点,然后根据这些交点的x坐标的大小和在每个多边形的奇偶性来,找出相邻两多边形的两相邻点,取平均值就行;
我觉得你的问题不是太难,能解决。
回复
发帖
数据结构与算法
创建于2007-08-27

3.2w+

社区成员

数据结构与算法相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2004-08-06 09:27
社区公告
暂无公告