Esri geometry api java 学习文档 (3) 点 (Point)
我们先从开始基础的内部类开始学习,今天要讲解的是拓扑的基础要素“ 点 Point ”
点是一个0维的空间数据,一定包含XY坐标信息,可能包含Z、M属性,上图是OGC对于点的结构定义。
其中Z为三维高程数据,M(measure )与应用环境有关。(The m coordinate value allows the application environment to associate some measure with the point values. )
点要素在 geometry api java 中分为“点 Point ”和“顶点 Vertex”
Point 一般指点要素,包含X、Y、Z、M (double) 属性
Vertex一般指构造中的点要素(组成线面体的基础要素)
其中Vertex在Point 的基础上还要添加所属ID、内插属性、贴图坐标等特殊属性与方法 (本文主要描述Point ,之后会在本文补偿或者再写一篇)
Point 的初始定义:
1.直接定义
1 public Point createPoint() {
2
3 Point pt = new Point(0.05, 0.05);
4
5 return pt;
6 }
2.读取JSON数据
OperatorImportFromJson.local().executeexecute(Geometry.Type type, String string);
Type :Geometry.Type寻找,这里是Point
string :JSON字符串
1 public Point createPointFromJson() throws JsonParseException, IOException {
2
3 String jsonString = "{\"x\":-106.4453583,\"y\":39.11775,\"spatialReference\":{\"wkid\":4326}}";
4
5 MapGeometry mapGeom = OperatorImportFromJson.local().execute(Geometry.Type.Point, jsonString);
6 return (Point)mapGeom.getGeometry();
7 }
3.读取GeoJSON数据
OperatorImportFromGeoJson.local().execute(int importFlags, Geometry.Type type, String geoJsonString, ProgressTracker progressTracker);
importFlags :
geoJsonImportDefaults = 0; 默认WGS84坐标系
geoJsonImportNonTrusted = 2; 不可信点
geoJsonImportSkipCRS = 8; 跳过CRS
geoJsonImportNoWGS84Default = 16; 非WGS84坐标系
type :Geometry.Type寻找,这里是Point
geoJsonString :GeoJSON字符串
progressTracker :null
1 public Point createPointFromGeoJson() throws JsonParseException, IOException {
2
3 String geoJsonString = "{\"type\":\"Point\",\"coordinates\":[-106.4453583,39.11775],\"crs\":\"EPSG:4326\"}";
4
5 MapGeometry mapGeom = OperatorImportFromGeoJson.local().execute(GeoJsonImportFlags.geoJsonImportDefaults, Geometry.Type.Point, geoJsonString, null);
6 return (Point)mapGeom.getGeometry();
7 }
4.读取WKT数据
OperatorImportFromWkt.local().execute(int import_flags, Geometry.Type type,String wkt_string, ProgressTracker progress_tracker);
import_flags :同上
Type :同上
wkt_string :WKT字符串
progressTracker :null
1 public Point createPointFromWKT() throws IOException {
2
3 String wktString = "Point (-106.4453583 39.11775)";
4 Geometry geom = OperatorImportFromWkt.local().execute(WktImportFlags.wktImportDefaults, Geometry.Type.Point, wktString, null);
5
6 return (Point)geom;
7 }
创建Point实例
1 PointLearn PointLearn = new PointLearn();
2 Point p1 = PointLearn.createPoint();
3 Point p2 = PointLearn.createPointFromWKT();
4 Point p3 = PointLearn.createPointFromJson();
5 Point p4 = PointLearn.createPointFromGeoJson();
Point 的数据结构:
见https://blog.youkuaiyun.com/wtr1717/article/details/87866570
Point 的常用方法:
数据操作
point .setAttribute(semantics) setX() setY() setZ() setM() setID() setXY() setXYZ() 设置属性
均是检查VertexDescription后,对 m_attributes 的操作
point .getAttribute(semantics) getX() getY() getZ() getM() getID() 读取属性值
均是检查VertexDescription后对 m_attributes 的操作
拓扑操作
判断相等(m_description结构相同 + m_attributes数据相同) p1.equals(p2);
坐标转换(二维仿射变换) (之后会在坐标转换专题再说~)
Transformation2D tr = new Transformation2D();
p1.applyTransformation(tr);
创建外接矩形 queryEnvelope
获取边界 getBoundary (return null 哈哈哈哈)
属于geometry通用功能,见 学习文档(2)geometry https://blog.youkuaiyun.com/wtr1717/article/details/87871204
判断数据状态
p1.getType(); 类型
p1.getDimension(); 维度
p1.isEmpty(); 空值
p1.estimateMemorySize(); 消耗内存
属于geometry通用功能,见 学习文档(2)geometry https://blog.youkuaiyun.com/wtr1717/article/details/87871204 p1.replaceNaNs 清空数据
p1.setEmpty(); 全部置空
复制操作:
opyTo(Geometry dst)
createInstance()
属于geometry通用功能,见 学习文档(2)geometry https://blog.youkuaiyun.com/wtr1717/article/details/87871204
以上是对于Point的总结,希望大家交流学习,如有错误请在评论指出谢谢。
参考:http://esri.github.io/geometry-api-java/doc/Point.html
http://esri.github.io/geometry-api-java/javadoc/com/esri/core/geometry/Point.html