地图文档中只是包含图层的引用,即存储当前地图的图层路径、符号系统、视图状态、图形修饰等信息,但并不存储真实的数据层。
图层(Layer)是地图(Map)的基本组成单位。图层可以是要素图层,也可以是栅格图层。要素图层有点、线、面3种显示不同类型要素类的图层,也有专题图层,如显示拓扑检查结果的图层、网络分析结果图层等;栅格图层是航片、卫星遥感影像、数字高程模型、普通图片等。
要素类、图层、要素数据集:
要素,地图中主要包括点,线,面三要素。要素类是shp格式文件,里面存储的类只能有一种,或是点或是线或是面。要素类对应一个图层文件。事实上,某一要素或者是某类要素是通过图层来表现的。
要素数据集是公用一个通用坐标系的相关“要素类”的集合,它们没有后缀名,存储在库文件内,用于按空间或主题整合相关要素类,它们的主要用途是将相关的要素类编排成一个公用的数据集,用以构建拓扑,网络数据集,地形数据集或集合网络。
一、地图文档,简单要素,shp数据,瓦片数据可视化
几种可视化的区别:
1.地图文档:
boolean isOpen = document.open(mapxFilePath) > 0; //打开地图文档
二维map:
Maps maps = document.getMaps(); //获取地图:根据地图索引获取,索引值从0开始 Map map = maps.getMap(0); if (map != null) { //将地图map赋予给地图控件mapcontrol mapControl.setMap(map); //复位地图 mapControl.restoreWnd();
三维场景:
Scenes scenes = document.getScenes(); //获取地图:根据地图索引获取,索引值从0开始 com.zondy.mapgis.scene.Scene scene = scenes.getScene(0); if (scene != null) { //将场景添加到三维场景控件SceneControl sceneControl.setMapGISScene(scene); //复位场景 sceneControl.reset();
2.简单要素:
//根据数据类型创建“矢量图层”:必须指定图层类型,在此根据简单要素类类型创建 VectorLayer vectorLayer = new VectorLayer(VectorLayerType.SFclsLayer); //设置URL:此URL为简单要素类完整URL地址 vectorLayer.setURL(featureClsURL); //构建地图对象 map = new Map(); //填加图层 map.append(vectorLayer); 方法一:根据简单要素类URL创建图层显示,此方法最简单快捷,无需连接数据源、打开数据库等操作
3.shp数据:
//根据数据类型创建矢量图层:在此创建简单要素类类型 VectorLayer vectorLayer = new VectorLayer(VectorLayerType.SFclsLayer); //设置URL地址:设置shp数据文件的本地路径,前面需添加“file:///”字符串 vectorLayer.setURL("file:///" + shpFilePath); //构建地图对象 map = new Map(); //叠加图层 map.append(vectorLayer);
4.瓦片数据
接口:
【1】矢量图层 :VectorLayer类
构造函数:public VectorLayer(VectorLayerType layerType);
二、要素编辑(添加要素【点、线、面、注记】到简单要素类)
添加:自己创建注记要素 添加到该要素类
目的:对要素类 中的要素进行 更改、添加、删除
创建布局-->初始化窗体(窗体的按钮有对应的 更改、添加、删除要素事件)
-->创建场景 -->显示标题、场景:
添加 要素事件里面(里面有:
更改要素后,会 显示该要素到地图上:
1.hbox
javafx hbox组件是一个布局组件,它将其所有子节点(组件)放置在一个水平行中。Java HBox组件由类javafx.scene.layout.HBox
.表示
此HBox在水平行中相邻布置两个按钮实例。
2.显示要素在图层上思路:
创建要素实例对象(设置该对象的属性的值)-->创建map在map中添加要素实例对象 -->在mapControl.setMap(map);
3. annotationCls :要素中的注记类对象
openByURL(String url) :用URL方式打开类
annotationCls.append(textAnno, null, textAnnInfo);:添加对象 ;
geom - 对象几何信息;rcd - 对象属性信息;inf - 对象的图形信息
3.1 TextAnno :实现对文本注记的相关操作 (文本)
3.2TextAnnInfo类 字符串注记参数信息 (图像)
4.SFeatureCls类 地理数据源 (点、线、面,矢量、栅格等)
FeatureCls.append(geoPolygon, null, regInfo): 添加对象 ;geom : 对象几何信息;rcd : 对象属性信息;inf : 对象的图形信息
二、1:
添加:.append(textAnno, null, textAnnInfo)
更新: 用.update(1, textAnno, record, textAnnInfo)
删除: 通过 要素id 删除 要素类中的要素
sFeatureCls.delete(oid);
三、空间查询 (查询的 几种方式--- 通过 点条件、多边形范围条件、属性查询)
1.QueryDef类 查询条件对象
//构造查询条件对象
QueryDef queryDef = new QueryDef();
//设置属性查询条件,参数为查询条件SQL语句字符串
queryDef.setFilter("mpPerimeter > 5000")
//查询:调用简单要素类对象SfeatureClsZ中的query方法,传入查询条件对象即可查询
RecordSet recordSet = SfeatureCls.query(queryDef);
根据属性条件查询要素:
多边形范围实现要素查询: (构建一个多边形 框, 查找在这个多边形里的要素个数)
点查询:
混合查询:同时通过 属性 和 矩阵查询: