点密度专题图随机点生成算法研究
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算机与现代化 2010年第8期
JIS UAN JI YU X IAN DA I H UA
总第180期
文章编号:1006 2475(2010)08 0022 03
收稿日期:2010 05 04
作者简介:张海文(1988 ),男,山西晋中人,北京邮电大学自动化学院硕士研究生,研究方向:地理信息系统;时良平(1939 ),男,教授,硕士生导师,研究方向:计算机控制及自动化,邮政技术;郝仰梅(1945 ),女,教授,硕士生导师,研究方
向:机械设计及自动化。
点密度专题图随机点生成算法研究
张海文,时良平,郝仰梅
(北京邮电大学自动化学院,北京100876)
摘要:鉴于在地理信息系统中常使用点密度专题图对地图进行渲染,用随机点点数代表在地图上展现的数据,为此本文
提出一个基于多边形栅格化,生成指定数目随机点的算法,可以制作出理想的点密度专题图。关键词:地理信息系统;点密度专题图;栅格;随机点中图分类号:T P391 文献标识码:A do:i 10.3969/.j i ssn .1006 2475.2010.08.007
Study on A lgorith m for G enerating Rando m Points i n Dot DensityM ap
Z HANG H ai w en ,S H I Liang ping ,HAO Y ang m e i
(Schoo l of A uto m ation ,Be iji ng U n i versity o f Po sts and T elecomm un i cations ,B eiji ng 100876,China)
Ab stract :In v ie w o f the cond ition that do t density map is frequently used for render i ng a map in G IS and the da t u m re l a ti ng t o t he map are v i v i d l y show ed by the a m ount of random po i nts ,this pape r propo ses an algor it h m fo r generati ng a g i ven nu m ber o f rando m po i nts based on po l ygon raster izati on .W ith the a lgo rith m,a perfect dot density m ap can be rendered .K ey w ords :G IS ;dot density m ap ;g rid ;random po i nt
0 引 言
地理信息系统(Geographic I nfor m ation Syste m,GIS)是上世纪六十年代中期发展起来的,集计算机科学、地理学、环境科学、空间科学、信息科学和管理科学为一体的学科。G I S 以计算机为手段解决分布与定位有关的问题,与生活休戚相关,应用范围涉及商业行销、设备管理、医疗卫生、旅游、公交、电信、房地产、城市规划及管理等领域。
GIS 利用专题图来图形化地显示地图基本信息某方面的特征。专题图根据在地图上显示的数据对地图进行渲染,表示现象的现状和分布规律及其联系,并且能够指出这些现象的动态变化及发展规律,有助于预测及预报。
点密度图是专题图的一种,用点(数)来表现与数据值对应的边界或域对象。一个域对象中点的总个数代表了域对应的数据值。
制作点密度专题图是地图制作的主要内容之一,点密度图用来表现的边界或域对象一般都是多边形。针对这个问题,本文提出基于多边形栅格化,在多边
形内生成特定数目随机点的算法。
1 基于多边形栅格化生成随机点的算法
该算法主要包括4部分的内容,总体流程图如图1所示。
图1 算法总流程图
2010年第8期张海文等:点密度专题图随机点生成算法研究23
(1)多边形的栅格化,生成在多边形内及和多边形相交的两组矩形;
(2)循环遍历所有在多边形内的矩形,在每个矩形中,生成一定数目的随机点;
(3)循环遍历每个和多边形相交的矩形,在矩形和多边形相交区域内生成一定数目的随机点;
(4)如果生成的随机点点数没有达到要求,则补充生成剩余的随机点。
在(2)、(3)中随机点点数由公式(1)求得,其中N 总是在多边形内要求生成的所有随机点的总点数,A 总是多边形的面积,A 交是矩形和多边形相交区域的面积,对于矩形在多边形内的情况,A 交即矩形的面积。
N /N 总=A 交/A 总
(1)
1.1多边形栅格化
多边形的栅格化是指将多边形用一组矩形近似代替的过程。具体步骤如下:
(1)根据多边形的最大横向、纵向坐标值及最小横向、纵向坐标值得到多边形的矩形包络;
(2)确定栅格化的粒度,即矩形包络分割后矩形栅格的数目,将矩形包络分割成大小相同的若干矩形;
(3)根据每个矩形栅格和多边形的几何关系,将栅格分为3组:在多边形外的、和多边形相交的、在多边形内的,舍去所有在多边形外的矩形。
可以根据多边形和矩形包络的面积比值确定栅格化的粒度。当比值越大时,粒度可以越小,最小为1,即不进行栅格化,矩形包络即唯一的矩形栅格;当比值越小时,粒度应该适当增大,尽量保证不存在由于矩形栅格与多边形相交部分过小,在相交部分生成随机点困难的情况,但是粒度选择过大,会造成运算量过大。
1.2在多边形内的矩形中生成随机点
在多边形内的矩形中生成随机点相对简单,具体步骤如下:
(1)根据公式(1),得到在多边形内的矩形中生成随机点的数目;
(2)在矩形的长、宽范围内分别生成N 个随机数,然后按照顺序依次组成N 个随机点,每个随机点的X 、Y 坐标分别为矩形长、宽方向上对应顺序的随机数。
1.3在与多边形相交的矩形中生成随机点
在与多边形相交的矩形中生成随机点相对复杂,
算法流程图如图2所示。
图2 在与多边形相交的矩形栅格中生成随机点算法流程图
(1)循环遍历每个与多边形相交的矩形栅格,利用SutherlandH odg m an 剪切算法得到矩形栅格和多边形相交面积的大小,利用公式(1)得到在相交区域内生成的随机点点数。
(2)在矩形中生成N 个随机点,遍历每一个随机点,如果点在多边形内,将该点加入随机点数组中,继续遍历下一个随机点。
(3)如果随机点不在多边形内,在矩形中再产生一个新的随机点,判断随机点与多边形的位置关系,如果随机点不在多边形内,则不断地循环产生新的随机点,循环次数的上限阈值是N M ax 。如果循环次数小于N M ax 的时候产生了位于多边形内的随机点,则将随机点加入随机点数组中,并结束循环。如果循环了N M ax 之后,仍然没有产生在多边形内的随机点,说明该矩形栅格和多边形的相交区域非常狭小,在该区域内产生随机点比较困难,选择放弃在该矩形栅格中产生随机点,得到还应该继续在该矩形栅格内填充的随机点的点数N Left 。如果存在包含在多边形内部的矩