lot and block系统地图指定区块精准外轮廓绘制方法咨询
基于Lot and Block勘测体系的地图区块外轮廓绘制方案
业务背景
- 正在开发基于*lot and block survey system(宗地-区块勘测体系)*的地图应用,该体系以
block(区块)、lot(宗地)作为地块唯一标识,例如个人住宅可对应到Block 34、Lot 2这类宗地编号;单个区块通常包含多宗相邻的宗地。 - 已实现单宗地查询能力:用户输入指定block与lot编号时,地图可自动缩放定位到目标位置,同时勾勒高亮对应宗地范围。
- 待落地需求:用户查询指定区块时,需完整展示该区块下所有宗地,同时沿所有宗地的实际外边界,绘制完全贴合整个区块真实形态的外轮廓。
现存问题
- 目前可通过JavaScript API的
QueryTask.execute()方法获取指定区块下的全部lot要素,但未找到多宗地要素聚合、外边界精准计算、贴合轮廓绘制的落地路径。 - 曾尝试调用
executeForExtent()方法实现需求,该方法仅返回要素的矩形外接范围,虽可囊括所有目标宗地,但矩形轮廓边缘会覆盖相邻其他区块的部分宗地,无法满足边界精准贴合的要求。 - 已确认该非矩形贴合外轮廓的效果可实现,但暂未找到对应实现代码与参考方案。
实现方案
核心逻辑是对同区块下的所有宗地多边形做*几何联合(Union)*运算,提取联合后多边形的外边界即可,完全不需要使用外接矩形类的范围方案。
分步实现流程
- 获取目标区块全量宗地数据
沿用现有QueryTask.execute()能力,查询指定block编号对应的所有lot面要素,查询参数中开启几何字段返回,拿到所有宗地的Polygon几何对象数组即可。 - 多宗地几何联合运算
选择任意一种几何运算能力,将所有宗地多边形合并为单个整体多边形:- 若使用ArcGIS JS API,可直接调用内置
geometryService.union()方法,传入全部宗地几何数组,回调结果即为合并后的完整区块几何; - 若不希望依赖服务端几何服务,可引入前端拓扑运算库,调用对应union方法在浏览器端直接完成计算,传入宗地的GeoJSON格式几何即可,无需额外发起服务请求。
运算前需确认所有宗地几何的空间参考完全一致,避免出现坐标偏移问题。
- 若使用ArcGIS JS API,可直接调用内置
- 轮廓绘制与视图定位
联合运算得到的单个多边形,其外边缘就是完全贴合所有宗地边界、不会侵入相邻区块的精准轮廓。将该几何传入图形图层,按需设置轮廓线样式、填充透明度(无需填充时可将填充透明度设为0)后添加到地图即可。
最后调用地图视图的范围定位方法,将视图缩放到该联合几何的对应范围,同时完成下属所有宗地的渲染。
注意事项
- 不要使用凸包(convexHull)算法计算外边界,凸包会将区块凹进的边界拉直,依然会出现覆盖邻区宗地的问题,必须使用多边形联合运算才能得到完全贴合的真实边界。
- 若原始宗地数据存在质量问题、相邻宗地间有极窄缝隙,可在联合运算后做一次极小距离的正负缓冲(例如先正向缓冲10cm,再负向缓冲10cm)消除缝隙,避免轮廓出现不必要的锯齿。
内容的提问来源于stack exchange,提问作者tpdietz
相关产品推荐
相关产品推荐

