空间数据投影变换与处理.docx
《空间数据投影变换与处理.docx》由会员分享,可在线阅读,更多相关《空间数据投影变换与处理.docx(34页珍藏版)》请在冰豆网上搜索。
空间数据投影变换与处理
项目4空间数据投影变换与处理
4.1案例教学
4.1.1任务要求
罗平县煤矿资源比较丰富,根据其主要煤矿的分布情况,县煤炭局划分出了若干个矿区。
根据目前已经掌握的地图数据情况,我们需要计算出每个矿区的面积分布情况,也需要知道各个乡镇的交通情况;同时,为了更有效地实现矿区的管理,需要把整个县根据某些条件划分为几个块,分别派给相应的煤矿单位进行管理。
4.1.2学习目标:
1,熟悉地图投影变换基本方法和内容,并领会其实际用途;
2,掌握空间数据处理(融合、拼接、剪切、交叉、合并等)的基本方法和原理,并领会其基本用途;
3,掌握利用已有的坐标文件生成相应矢量图层数据的基本方法,并领会其基本用途。
4.1.3材料准备
软件环境:
ArcGIS9.2DeskTop
数据准备:
乡镇分布.shp矿区分布.shp主要公路.shp,河流.shp,全站仪.txt
4.1.4操作步骤
4.1.4.1熟悉数据
打开arccatalog窗口,连接并打开该项目包含所用数据的文件夹project4A的路径,如:
D:
\arcgis_book\ProjectData\project4A,查看文件组织时,可能会发现只有shp文件,而没有看到”全站仪.txt”的坐标文件。
选择菜单“tools”“options”,打开选项对话框,在general对话框中,在“whichtypeofdatadoyouwantthecatalogtoshow”下,找到并选中“textfile”,这样,就可以在Arccatalog中显示txt坐标文件了。
图4-1添加数据类型
图4-2 项目文件组织
打开Arcmap,新建一个空白地图文件,添加project4A文件夹下的4个图形数据(除了片区分布.shp),暂时不添加“全站仪.txt”坐标数据,根据数据类型,调整好层的关系和要素符号,如图4-3:
图4-3数据视图
4.1.4.2投影变换
观察图4-3的底部,就会发现该地图数据组所用的是地理坐标,这会给我们后续的操作带来麻烦,因为我们需要知道每个矿区的面积情况或每个乡镇的面积大小、道路长度情况等,所以,我们需要先把地理数据的坐标转换为以米为单位的平面坐标,这就要用到投影变换功能了。
首先查看图层所用的地理坐标类型:
选择一个图层,如“乡镇分布”,查看其属性,在属性对话框中,选择“source”标签,在“datasource”组框中包含了该图层所用的坐标系统情况,可以发现,这里所用的是西安80坐标系,如图4-4:
图4-4查看坐标系统
(1),定义投影
点击ArcMapStantard标准工具栏上的按钮
启动Arctoolbox(也可以在ArcCatalog中的工具栏上启动它)。
在Arctoolbox中,打开datamanagementtools工具箱,选择projectionsandtransformations下的defineprojection,打开定义投影对话框。
在“inputdatasetorfeatureclass”下选择一个要素文件,如“乡镇分布”。
图4-5定义投影
在“coordinatesystem”下,点文本框右边的按钮,进入“spatialreferenceproperties”对话框,点“select”按钮,进入预定义坐标选择对话框,在对话框中选择:
GeographicCoordinateSystemsAsiaXian1980.prj,确定,退出,完成了坐标定义,但如果该文本框中已经有了一个坐标名称,说明该图层已被定义了投影,若不符合要求,可以进行修改。
图4-6选择定义坐标
这种投影定义方法一次只能定义一个数据的投影,对于多个数据需要进行投影定义时就比较麻烦,需要一个一个地进行投影定义(我们这个案例就属于这种情况)。
假如这多个数据所用坐标系统一致,可以考虑使用批定义的方法,该工具在:
“samples”工具箱中,打开该工具箱,选择datamanagementprojectionsbatchdefinecoordinatesystem(如图4-5)。
建议试试用这种方法进行所有文件的坐标系定义。
(2),投影变换
假如只是单个文件的投影变换,可以执行“projectionsandtransformations”“feature”“project”命令。
但我们这里有多个数据文件,这样未免有点麻烦,可以使用批投影方法:
打开“datamanagementtools”工具箱,执行“projectionsandtransformations””feature”下的“batchproject”脚本工具,打开批投影对话框,点击“inputfeatureclassordataset”的文本框右边的打开按钮,定位到project4A文件夹,把该文件夹下的数据全部选中(包括个别现在还没有加入到arcmap中的数据),点“add”,就可以把要进行投影变换的数据全部添加进来。
如图4-7:
图4-7批投影设置
在继续之前,先回到你的工作目录中,在project4A下创建一个子文件夹,命名为“FinalData”。
在“batchproject”中,点击“outputworkspace”文本框右边的按钮,选择刚才创建的文件夹“FianlData”,点击“add”,这样,就可以把该文件夹作为投影后文件的存储空间。
(如图4-7)
点击“outputcoordinatesystem”文本框右边的按钮,进入“spatialreferenceproperties”对话框,选择目标坐标系统。
在这个项目中,根据已有数据的坐标覆盖范围情况,应该把它们投影到高斯投影6度带的18带(或者是东经105度),同时,根据项目的要,我们不希望在坐标前加带号。
在“XYcoordinatesystem”中,点“select”按钮,在跳出的对话框中依次选择:
ProjectedCoordinateSystemsGaussKrugerXian1980Xian1980GKCM105E。
(在这里请注意,假如选择的是Xian1980GKZone18.prj,也一样正确设置了投影坐标系,但投影后的结果会在X坐标前面加上带号18,所以,在实际应用中,应该要按照需求选择不同的投影带设置)。
图4-8设置空间参考
完成后,点“add”按钮,退出选择对话框,点“应用”、“确定”,退出空间参考对话框,实现输出坐标系的选择。
(如图4-8)
最后,在“batchproject”对话框中点“OK”按钮,就开始进行投影变换了。
完成后,重新打开arcmap,创建空地图文档,添加“FinalData”文件夹下的要素层,观察坐标和datasource属性,就会发现已经由原来的地理坐标变为平面投影坐标。
图4-9投影后效果
现在可以进行要素的面积查询了吗?
我们可以试一下,选择tools工具栏上的“identify”按钮工具,查询下某个乡镇的属性,会发现,其面积属性并没有变成以平面坐标米为单位的面积,而还是原先的经纬度计算结果,也就是说,面积属性还是不能用(如图4-10)。
可以利用字段计算器的方法实现多边形面积的计算。
图4-10面积和长度查询
打开“乡镇分布_shp”的属性表,向属性表中添加一个字段:
面积,数据类型为double。
图4-11添加字段
添加完字段后,打开“ editor”工具栏,选择“startediting”激活编辑功能,在“矿区分布”的属性表中右键点击“面积”字段列,然后点击fieldcalculator;跳出“fieldcalculator”对话框,选中选择框“advanced”,然后在”pre-logicVBAscriptcode”下面的文本框中,输入如下脚本代码:
DimOutputAreaasdouble
DimpAreaasIarea
SetpArea=[shape]
OutputArea=pArea.area
在“面积=”下方的文本框中输入变量名:
OutputArea,完成后,确定,就可以实现各个多边形面积的计算了。
图4-12字段计算器
图4-13面积计算结果
用同样的方法,请计算出“矿区分布”中每个矿区的面积。
完成之后,退出编辑状态。
4.1.4.3数据处理
假设由于管理的需要,打算把整个罗平县划分为4个部分,同时也把矿区区分开来,划分方法是:
南北方向大致为公路走向,东西方向大致为久龙河方向。
分完区后,每个区可以单独计算其区域面积和所有矿区面积,在管理上互不影响,完成某个任务后再把分区合并起来就可实现整个任务,具有分布式任务分配的意味。
(注意:
后面操作要使用的数据在“FinalData”文件夹下)
(1)区域分块
实现分块可以考虑裁减要素的方法,前提是必须把裁减范围以多边形要素的形式出现。
根据前面分区的基本原则,本项目生成了一个多边形要素:
片区.shp,把该要素加入到当前地图文档中,调整顺序,使之处于最底层,同时,把该文件要素的背景颜色改为“无颜色”,使之透明。
激活“片区”,使用选择工具并选中图层中的左上角的多边形要素,注意确保不要选中“乡镇分布”中的要素。
图4-14多边形选择
单击
,进入arctoolbox,打开analysistools工具箱,选择extract下的clip裁减工具,双击打开:
在inputfeatures下选择“乡镇分布”;
在clipfeatures下选择“片区”;
在outputfeatureclass下指定输出路径为:
…\priject4A\FinalData\乡镇分布_shp_clip。
图4-15裁减设置
设置完成后,点“OK”按钮,就开始进行裁减,选中要素范围内的“乡镇分布”的要素被裁减出来。
用同样的方法,依次选中“片区”中其他的三个面状要素,重复以上步骤,从而得到4个裁减结果:
乡镇分布_shp_clip,乡镇分布_shp_clip1,乡镇分布_shp_clip2,乡镇分布_shp_clip3。
完成后,关闭其他的层,查看裁减后的结果。
图4-16裁减得到的4个图层
(2)拼接图层
当4个片区各自都完成某一项任务,或是其他目的为得到全局效果,可以考虑把分开的片区拼接起来。
在arcmap中新建一个地图文档,加载在裁减步骤中生成的4个图层文件。
单击
,打开arctoolbox。
打开“datamanagementtools”工具箱,选择并双击“general”下的“append”命令,打开“append”拼接对话框。
打开“appenddataset”下拉框,依次选择“乡镇分布_shp_clip1”、“乡镇分布_shp_clip2”、“乡镇分布_shp_clip3”3个图层,或点击后面的添加按钮,导航到相应文件夹添加她们;用同样的方法,在“targetdataset”下拉框中选择图层“乡镇分布_shp_clip”,这样做,是为了把其他3个图层拼接到“乡镇分布_shp_clip”中。
设置完成后,点“OK”。
图4-17拼接设置
图4-18拼接后的图层
拼接完成后,右键点击图层“乡镇分布_shp_clip”,在跳出的右键菜单中执行操作“data”“Exportdata”,进行图层导出操作。
在跳出的导出数据对话框中,指定导出数据到目录“project4A\FinalData”中,名称为“PJTC.shp”(如图4-19)。
图4-19导出数据
(3)要素融合
新建一个地图文档,添加上一步生成的拼接图层:
PJTC.shp,会发现,有几个乡镇在拼接线处被分成两块或多块(如图4-18),需要把拼接线消除掉,这要用到arctoolbox中的“dissovel”融合功能。
打开arctoolbox,选择工具箱“datamanagementtools”,执行“generalization”“dissovel”命令,打开“dissovel”对话框,在inputfeatures下拉框中选择PJTC.shp,在outputfeatureclass文本框中输入结果文件路径,在“dissovel_fields..”下选择“名称”字段(如图4-20)。
图4-20要素融合设置
完成后,点“OK“,系统将根据选择的字段的值对要素进行融合,即把属性字段“名称”中名称相同的要素合并成一个要素(如图4-21)。
图4-21要素融合前后对比
类似的方法,假如融合时使用字段“所属”进行操作,最后的结果会是什么?
(4),图层合并
在arcmap中新建一个地图文档,加载“FinalData”下的乡镇分布.shp和矿区分布.shp,调整顺序,使矿区分布图层在上方。
打开arctoolbox,打开analysistools工具箱,执行“overlay”“union”命令,打开union合并对话框,在inputfeatures下拉框中选择要进行合并的2个图层:
乡镇分布.shp、矿区分布.shp,在outputfeatureclass文本框中输入或选择输出路径和结果文件名,比如:
D:
\project4A\FinalData\乡镇分布_shp_Union.shp,在JoinAttributes下选择all,说明合并2个图层所有的属性,设置完成后,点“OK“进行合并操作。
其结果如图4-22:
图4-21图层合并工具
图4-22图层合并结果
合并完成后,查看输出要素的属性表,可以发现,新要素的属性包含了原2图层的所有属性字段,其中,字段“矿区名称”为非空白的多边形要素表示有矿区覆盖,空白的则没有矿区覆盖。
为了显示清楚,右键单击图层“乡镇分布_shp_Union”,执行操作“properties”“symbology”,设置图例为“uniquevalues”方式,字段为“矿区名称”,设置完成后,点击按钮“addallvalues”(如图4-22)。
(4)图层相交
在图层合并的基础上继续进行。
执行“overlay”“intersect”命令,打开intersect对话框,在inputfeatures下拉框中选择要进行相交的2个图层:
乡镇分布.shp、矿区分布.shp,在outputfeatureclass文本框中输入或选择输出路径和结果文件名,比如:
D:
\project4A\FinalData\乡镇分布_shp_intersect.shp,在JoinAttributes下选择all,设置完成后,点“OK“进行相交操作。
其结果如图4-24:
图4-23图层相交工具
图4-24图层相交结果
请查看下相交结果文件的属性,用它和“矿区分布”图层的属性和合并图层结果文件的属性进行相比较,看看是否有什么不同。
4.1.4.4坐标文件生成数据
目前各类测量仪器所测出来的多是坐标数据,比如手持GPS,RTK,全站仪等,可以把这些数据导入arcmap中生成点文件。
启动arcmap,新建一个地图文档,在图层控制面板(TOC)窗口中切换到“source”数据源视图,单击
按钮添加project4A文件夹下的“全站仪.txt”文件,该数据是一个添加了文件头的全站仪数据。
图4-24全站仪数据文件
图4-25选择添加坐标数据
数据添加进来后,执行菜单命令:
“tools”“addXYdata…”,跳出添加XY坐标数据对话框,在“chooseatablefrom…”下选择加入的坐标表格数据:
全站仪.txt,在“Xfield”右边选择“X”,在“Yfield”右边选“Y”,点下面的“edit”,进入“spatialreferenceproperties”空间参考属性对话框,为坐标数据选择坐标系。
在这里,必须要先知道坐标数据所用的坐标系,这里,用的是基于54坐标系的高斯投影,点“spatialreferenceproperties”对话框中的select…按钮,选择:
ProjectedCoordinateSystemsGaussKrugerBeijing1954Beijing19543DegreeGKCM105E.prj。
确定后,跳出一个警示对话框,选“确定”,这样就生成了一个根据坐标的点事件图层,但就如警示所说,这个图层不可以进行选择、编辑等操作,要想实现这些功能,需要把事件图层导出来。
图4-26事件图层
在TOC中,右键选中根据全站仪数据生成的时间图层,在跳出的菜单中执行“data”“export”命令。
图4-27导出数据
在跳出的导出数据对话框中,指定导出文件到FinalData文件夹下,文件名称为TS.shp。
这样就完成了根据全站仪坐标数据生成图层的过程。
图4-28导出数据设置
4.1.5基础知识
4.1.5.1地理坐标系
地理坐标系(geographiccoordinatesystem)使用基于经纬度坐标的坐标系统描述地球上某一点所处的位置。
某一个地理坐标系是基于一个基准面来定义的,基准面是利用一个特定的椭球体对特定地区的地球表面的逼近,因此各个国家或地区都有各自的基准面。
表4-1我国常用的3种基准面及其参数
椭球体
长半轴a/m
短半轴b/m
Krassovsky(北京54采用)
6378245
6356863
IAG75(西安80采用)
6378140
6356755
WGS84
6378137
6356752
在arcgis中,基于表4-1中的3个椭球体,建立了我国常用的3个基准面和地理坐标系:
●GCS_WGS1984(基于WGS84基准面),该坐标系统属于地心坐标系,目前该坐标系在我国GIS中使用不多,主要在使用GPS进行定位时获取,并且在多数情况下,需要将其转化北京54或西安80坐标系。
●GCS_BEIJING1954(基于北京54基准面),该坐标系统属于参心坐标系,该坐标系统于1954年建立,是由前苏联1942年坐标系统经联测和平差计算引申到我国的,目前相当一部分的基础地图资料都是以该坐标系统作为框架。
●GCS_XIAN1980(基于西安80基准面),也是一种参心坐标系,是鉴于北京54坐标系存在的种种问题,为了适应发展的需要所建立起来的。
该坐标系统统一,精度比较好,可直接满足1:
5000甚至更大比例尺测图的需要,我国已在国民经济各个领域大量使用该坐标系统,以逐步取代北京54坐标系统。
4.1.5.2投影坐标系
投影坐标系(projectedcoordinatesystem)使用基于平面的X、Y值的坐标系统来描述地球上某个点的位置。
这种坐标系统是从地球近似椭球体的投影中得到的,它对应于某个地理坐标系。
投影坐标系主要由地理坐标系和投影方法两个参数确定。
而地理坐标系又由某个椭球体对应的基准面所确定,比如北京54,西安80等;而投影方法根据不同的投影方式又分为不同的类型,我国常用的比如:
高斯—克吕格(Gauss-Kruger)投影、兰勃特(Lambert)投影、墨卡托(Mercator)投影等,在ArcGIS中提供了几十种常用的投影方法。
目前我国在地图投影的使用上,在基本比例尺地形图中,主要有如下原则:
在大于等于50万比例尺的地形图均采用高斯-克吕格投影,其中,小于1万的地形图采用6度带投影,大于1万的地形图采用3度带投影;
小于50万的地形图采用正轴等角割圆锥投影,即兰勃特投影;
海上小于50万的地形图多用正轴等角圆柱投影,即墨卡托投影
另外,在高斯投影中,又由于使用基准面的不同,又分为基于北京54的高斯投影和基于西安80的高斯投影。
4.1.5.3地理变换
地理变换是一种在地理坐标系(基准面)间转换数据的方法。
当将地理数据从一个坐标系统变换到另外一个坐标系统时,假如数据的变换涉及到了其基准面的改变,就需要通过地理变换来实现地理坐标系的变换或基准面的平移。
主要的地理变换方法有三参数法和七参数法。
其中七参数为X平移、Y平移、Z平移、X旋转、Y旋转、Z旋转以及尺度比参数,若忽略旋转参数和尺度比参数则为三参数方法,三参数法为七参数法的特例。
这里一个常见的地理变换就是:
通过手持、静态GPS或RTK手段获取的基于WGS84的坐标与北京54、西安80坐标之间的相互转换。
4.1.5.4投影变换
当系统所使用的数据是来自不同地图投影的图幅时,需要将一种投影的地理数据转换成另一种投影的地理数据,这就需要进行地图投影变换。
地图投影变换的实质是建立两平面场之间点的一一对应关系。
4.1.5.5Arctoolbox
Arctoolbox是ArGISDesktop中的一个软件模块,内嵌在ArcCatalog和ArcMap中,在arcview、arceditor和arcinfo中都可以使用。
Arctoolbox由多个工具集(toolset)构成,能够完成不同类型的任务,每个主工具集中还包含了不同级别的子工具集,子工具集中包含了若干工具。
根据应用的需要,我们可以在Arctoolbox中创建新的自定义的工具箱,在工具箱中可以建立不同的模型、或实现特定任务的脚本;另外,我们还可以对Arctoolbox中的工具箱和工具进行复制、移动、重命名等管理任务。
Arctoolbox下包含了若干个工具箱,其主要工具箱下包含工具的作用如下:
1,3D分析工具(3Danalysttools):
使用3D分析工具可以创建和修改TIN或栅格表面,并从中抽出相关信息。
2,分析工具(analysistools):
对于所有类型的矢量数据,分析工具提供了一整套的处理方法,主要有合并、裁减、相交、判别、拆分、缓冲区、近邻、点距离、频度、统计等。
3,制图工具(cartographytools):
制图工具与arcgis中其他大多数工具有着明显的目的性差异,它是根据特定的制图标准来设计的,包含了3种掩膜工具。
4,转换工具(conversiontools):
包含了一系列不同数据格式的转换工具,主要有栅格数据、shapefiles、coverage、table、dbase,以及CAD到geodatabase的转换等。
5,coverage工具(coveragetools):
提供了一系列强大的工具来实现各种地理处理过程,且输入输出都只能是coverage格式,主要实现分析、数据管理和数据转换等功能,通过workstation执行。
6,数据管理工具(datamanagementtools):
提供了多种工具来管理和维护要素类,数据集,数据层以及栅格数据结构。
7,地理编码工具(geocodingtools):
地理编码又称为地理匹配,是建立地理位置坐标与给定地址一致性的过程。
使用该工具可以给各个地理要素进行编码操作,建立索引等。
8,地理统计分析工具(geostatisticalanalysttools):
地理统计分析工具提供了广泛全面的工具,用它可以创建一个连续表面或者地图,用于可视化及分析。
9,线性要素工具(linearregerencingtools):
生成和维护线状地理要素的相关关系,如实现由线状coverage到路径(route),有路径事件(event)属性表到地理要素类的转换等。
10,空间分析工具(spatialanalysttools):
空间分析工具提供了很丰富的工具来实现基于栅格的分析。
在GIS三大数据类型中,栅格数据结构提供了用于空间分析的最全面的模型环境。
11,