一、下载OSM数据

首先从OpenStreetMap官网下载我们需要的实验数据,这里我选择清华和北大校园作为本次实验数据

二、数据处理

将我们下载的实验数据导入ArcGIS。由于OSM数据是.osm格式,因此导入ArcGIS之前需要将其转换为.shp格式,具体方法见:关于openstreet map的osm文件转shp文件方法(附arcgis10.2插件)

可以看到,面状数据中除了建筑物之外还有植被、水体等。因此为了实现对建筑物的简化,我们需要将建筑物单独从面状数据中筛选出来。

打开面状数据的属性表,不难发现building字段可以反应每个面是否为建筑物。因此,我们打开Select by Attribute面板,buiding <>''找出buiding字段不为空的记录,再将这些记录导出就能得到只包含建筑物的面状数据了。

三、算法实验

建筑物简化:

ArcGIS 10.2的建筑物简化工具位于Toolboxes->Cartography Tools->Generalization->Simplify Building,但我们暂时还不能进行简化。

巨坑警告!在进行建筑物简化之前,请务必确认数据的参考坐标系和投影坐标系!ArcGIS 10.2似乎不能对 **没有投影坐标系的经纬度坐标(Decimal Degrees) **下的建筑进行简化,而下载的OSM数据一般是基于WGS-84坐标系,本身没有进行地图投影,因此没有投影坐标。如果直接使用经纬度进行建筑物简化可能得到错误结果(例如下图所有建筑物变成三角形,且与容差设置无关)

因此,建议先进行下面两个步骤:

1. 改变数据的坐标系。

打开Toolboxes->Data Management Tools->Projections and Transformation->Feature->Project 工具。
其中Input Coordinate System 选项可以看到当前数据的坐标系,如果仅仅只有参考坐标系则需要进行投影。Output Coordinate System选项代表我们将要变更到的坐标系,选择Projected Coordinate System中的一种投影坐标系就好,这里我选择了Mercator投影坐标系。

现在我们得到了一个Mercator投影的建筑物面状数据。

2. 改变Data Frame的坐标系

其实完成上一步,就已经可以正常进行建筑物简化了,只需要在Simplify Building工具中导入刚才得到数据,再Simplification Tolerance选项将单位改成Meters即可。(注意:必须使用有投影坐标系的数据,再改变这里的单位,否则也可能得到错误的简化结果)。

PS:虽然经过我的测试,只要数据是Project之后的,并且容差值合适(对于经纬度而言,例如0.001),即使容差单位选择Decimal degrees,也能得到正确的简化结果。不过鉴于建筑简化工具还有关于面积的Minimum Area等参数,不太推荐使用经纬度进行简化。

因此,为了便于对简化算法结果的量算和分析,最好是在菜单栏View-Data Frame Properties中更改数据框架显示的Coordinate System,这里我把他设置成Mercator投影。这样就能够在Measure工具中以米为单位量算距离和面积了。

现在就可以正常使用Simplify Building工具对我们的建筑物数据进行简化了,让我们看看使用10m作为容差的结果。接下来只要再对结果进行分析就能完成实验啦,这里就不作讨论了。

建筑物群聚合:

ArcGIS 10.2似乎并没有直接的建筑物群聚合工具,因此,要实现建筑物群简化我们需要借助聚合面工具。

首先,需要在菜单栏的Customize-Extensions中打开Spatial Analyst功能。

然后再工具箱中找到Toolboxes->Cartography Tools->Generalization->Aggregate Polygons工具,这就是我们需要的聚合面工具。

从ArcGIS官网上我们能够了解到每个参数和选项的含义,根据我们实验的情况选择使用合适的参数即可完成建筑物群的聚合。

参数 说明 数据类型
in_features 要聚合的面要素。如果这是一个引用某个制图表达的图层,并且在输入要素中存在形状覆盖,则在聚合处理中将采用这些覆盖的形状、而不是要素形状。 Feature Layer
out_feature_class 要创建的输出要素类。 Feature Class
aggregation_distance 聚合时面要素边界间要满足的距离。必须指定一个距离,且此距离必须大于零。可以选择首选单位;默认为要素单位。 Linear Unit
minimum_area(可选) 聚合面得以保留的最小面积。默认值为零,即保留所有面。可以指定首选单位;默认为要素单位。 Areal Unit
minimum_hole_size(可选) 面要素中的孔洞得以保留的最小大小。默认值为零,即保留所有面要素中的孔洞。可以指定首选单位;默认为要素单位。 Areal Unit
orthogonality_option(可选) 指定构造聚合边界时输出要素的特征。NON_ORTHOGONAL —将创建有机形状的输出要素。这适用于自然要素,例如,植被或土壤多边形。这是默认设置。ORTHOGONAL —将创建正交形状的输出要素。此选项适用于保留人为输入要素的几何特性,例如,建筑物轮廓线。 Boolean
barrier_features[barrier_features,…](可选) 包含在输入要素中作为聚合障碍的线要素或面要素的图层。要素不会跨障碍要素聚合。与输入要素存在几何冲突的障碍要素将被忽略。 Feature Layer
out_table(可选) 将聚合的面连接到其源面要素的一对多关系表。该表包含两个字段(OUTPUT_FID 和 INPUT_FID),分别用于存储聚合要素 ID 和其源要素 ID。使用此表根据源要素派生输出要素的必要属性。该表的默认名称为输出要素类名称加上 _tbl。默认路径与输出要素类相同。当该参数留空时,不创建任何表。 Table

最后,我们来看一下容差为30m的建筑物群聚合结果,然后对结果进行分析就好啦!

ArcGIS建筑物简化和建筑物群聚合算法实验相关推荐

  1. ArcGIS两种线简化算法和建筑物综合(面的简化和建筑物聚合)的参数计算方法

    ArcGIS两种线简化算法和建筑物综合(面的简化和建筑物聚合)的参数计算方法 文章目录 ArcGIS两种线简化算法和建筑物综合(面的简化和建筑物聚合)的参数计算方法 1.问题描述 2.参数计算 2.1 ...

  2. 几何匹配和分合算法的图像识别技术

    第一章  引言 1.1  面像定位概述及其与面像识别的关系     这个设计所涉及到的是面像的定位和识别.简单来说,所谓面像的定位,就是在照片(静态图像)或视频(动态图像)中标出面像所在的位置,把面像 ...

  3. 易基因 | 简化基因组DNA甲基化测序(RRBS)实验怎么做?

    易基因 | 简化基因组DNA甲基化测序(RRBS)实验怎么做? 大家好,这是专注表观组学十余年,领跑多组学科研服务的易基因. 上次我们分享了:全基因组DNA甲基化实验怎么做:手把手教你做全基因组DNA ...

  4. 图像相减的matlab仿真及光栅滤波法,图像相减的MATLAB 仿真及光栅滤波法实验实现...

    图像相减的MATLAB 仿真及光栅滤波法实验实现 毕业设计(论文)中期报告题目图像相减的MATLAB仿真及光栅滤波法实验实现院(系)光电学院专业光信息科学与技术班级090106姓名陈凤学号090106 ...

  5. 【SLAM十四讲】ch11 回环检测 词袋法实验 得出相似分数后计算PR曲线 VPR实验 编辑中

    [SLAM十四讲]ch11 回环检测 词袋法实验 得出相似分数后计算PR曲线 [SLAM十四讲]ch11 回环检测 词袋法实验 得出相似分数后计算PR曲线 DBow3库安装 ch11编译 ch11 词 ...

  6. 图像相减的matlab仿真及光栅滤波法,图像相减的MATLAB 仿真及光栅滤波法实验实现.doc...

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp计算机&nbsp>&nbsp图形图像 图像相减的MATLAB 仿真及光栅滤波法实验实现.do ...

  7. 二分法+牛顿迭代法+简化牛顿迭代法+牛顿下山法解方程的近似值

    1.二分法 //求方程 2*x*x*x-4*x*x+3*x-6 的根 /* 二分法*/ #include<stdio.h> #include<math.h> #define E ...

  8. 逻辑函数的简化之图解法(卡诺图法)

    数字电路逻辑设计           卡诺图 目录 前言 1.什么是卡诺图 2.用卡诺图表示逻辑函数的方法 3.利用卡诺图合并最小项的规律 4.任意项 前言 在学习FPGA的时候,关于竞争和冒险的判断 ...

  9. 【04】拟合算法:01-拟合算法模型讲解

    第四讲:拟合算法 插值和拟合的区别 一个小例子 确定拟合曲线 最小二乘法的几何解释 求解最小二乘法 Matlab求解最小二乘 如何评价拟合的好坏 证明SST=SSE+SSR "线性函数&qu ...

最新文章

  1. 博客开通第一天,加油
  2. 云上效率提升指南 | K8S和Serverless还能这么玩
  3. C语言socket connect()函数(初始化套接字上的连接)(未完)(如何测试socket是否已经断开,如何判断socket是否断开)
  4. Altiris 7.1 安装
  5. Java基础知识学习01-环境变量的配置、数据类型
  6. MySQL 索引优化全攻略
  7. LeetCode 374. 猜数字大小(二分查找)
  8. 成员变量和局部变量的区别_Java 变量类型
  9. nginx配置url重写
  10. P2419 [USACO08JAN]牛大赛Cow Contest
  11. 【Java基础学习笔记】- Day11 - 第四章 引用类型用法总结
  12. Hibernate学习(四)
  13. 理解Semaphore及其用法详解
  14. MVP Open Day 2011
  15. 操作系统MOOC课后习题答案
  16. 字段缩写ti表示什么_EBSCOhost数据库中,检索字段代码为TI、SO、AU分别表示
  17. KUKA库卡机器人零点失效维修案例
  18. Javascript-introduce
  19. 2008年胡润中国富豪榜榜单(401-500名)
  20. C语言端口扫描源码,C语言实现TCP多线程端口扫描

热门文章

  1. 服务器虚拟化安装图,vmware-vsphere6.0-服务器虚拟化部署安装图解
  2. C#计算圆的面积及半径
  3. 2122h计算机使用教程视频,计算机安装调试工理论.doc
  4. 喜报|探码科技荣获2022年度四川省“专精特新”中小企业认定
  5. 【Unity3D】世界坐标系 ( 左手坐标系 | 游戏物体坐标 | 世界坐标系方向 )
  6. 2022 *CTF REVERSE 的 NaCl
  7. SUN U45 B150 B2500 V240 V440 V880 V890服务器
  8. 度假巴厘岛2010 --- 田野风光
  9. Android应用调用微信登录接口
  10. .NET 分布式 搜索 elasticsearch.net NEST