- Mastering ArcGIS Server Development with JavaScript
- Ken Doman
- 623字
- 2021-07-16 20:03:03
Introducing geometry objects
Geometry objects are a collection of coordinates that describe where something is in the world. They give shape to the data we're looking for. They can be used for displaying graphics on a map, or to provide spatial data for queries, or even for geoprocessing services. Geometry objects come in five basic types: point, line, polygon, extent, and multipoint. Any shapes are built on these basic types. Let's take a closer look.
Point
In the ArcGIS API for JavaScript, a point is the simplest geometry object. It contains the x and y coordinates of the point, as well as the point's spatial reference. A point can be constructed with x and y coordinates, plus a spatial reference. It can also be defined by longitude and latitude.
Polyline
A polyline geometry is a collection of one or more arrays of point coordinates. Each array of point coordinates is called a path, and would look like a line when drawn out. Multiple paths can be stored in the same geometry, giving the appearance of multiple lines. The individual point coordinates are stored as array of x and y values.
Polygon
Polygons are made up of one or more arrays of points that loop back on themselves. Each array of points is referred to as a ring, and the first and last point in a ring must have the same coordinate. Polygons made up of more than one ring are referred to as multipart-polygons.
Among the many properties and methods that control the polygon's shape are two useful methods: .getCentroid()
and .contains()
,.getCentroid()
returns a point that is roughly in the middle of the polygon. The formula used to calculate the centroid's position can be found on the Wikipedia page for centroids: (http://en.wikipedia.org/wiki/Centroid#Centroid_of_polygon). The .contains()
method takes a point as an input, and returns a boolean
value based on whether the point is inside the polygon or not.
Extent
An extent is a rectangular polygon, which only uses four numbers to describe its shape. The extent is described by its minimum x value (xmin
), maximum x value (xmax
), minimum y value (ymin
), and maximum y value (ymax
). When viewed on a map, extents typically look like a box.
Extents are used by many different parts of the API. All other geometry objects other than points have a getExtent()
method, which is used to collect the bounding box of the geometry. You can zoom to a specific location on a map by setting the map's extent. Extents are also used to define an area of interest when identifying things on a map.
Multipoint
Sometimes you need a cluster of points to show on the map. For that, the multipoint is your answer. You can add and remove points using the addPoint()
and removePoint()
methods. You can also get the general area the points cover with the getExtent()
method. They're useful for collecting random points in an area, and for selecting unconnected features on a map.
Geometry spatial reference
Besides coordinates of a geometry's location, the geometry object also packs information on the object's spatial reference. The spatial reference describes the mathematical models used to describe the Earth within the mapped region. Instead of containing all those formulas and constants, the spatial reference stores a reference to those formulas through either a well-known ID (WKID), or a well-known text (WKT).
Spatial Reference plays a crucial role when displaying data on a map. Tiled map service layers must have the same spatial reference as the map, in order to be displayed. Dynamic map service layers must be reprojected, adding to the server time and workload. Graphics also need to be in the same spatial reference as the map to appear in the correct places on the map.
- C++面向對象程序設計(第三版)
- C++程序設計教程
- Learning Java Functional Programming
- LabVIEW 2018 虛擬儀器程序設計
- Java 開發從入門到精通(第2版)
- Ceph Cookbook
- Mastering Python Scripting for System Administrators
- 軟件測試工程師面試秘籍
- Practical DevOps
- TypeScript圖形渲染實戰:基于WebGL的3D架構與實現
- PySide GUI Application Development(Second Edition)
- 零基礎學Python網絡爬蟲案例實戰全流程詳解(高級進階篇)
- Visual FoxPro程序設計
- 大話Java:程序設計從入門到精通
- Python Projects for Kids