{"id":69281,"date":"2015-09-16T04:00:02","date_gmt":"2015-09-16T04:00:02","guid":{"rendered":"http:\/\/www.esri.com\/arcgis-blog\/products\/product\/uncategorized\/geometryengine-part-2-measurement\/"},"modified":"2023-03-15T14:57:23","modified_gmt":"2023-03-15T21:57:23","slug":"geometryengine-part-2-measurement","status":"publish","type":"blog","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/developers\/developers\/geometryengine-part-2-measurement","title":{"rendered":"GeometryEngine part 2: Measurement"},"author":6561,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"open","ping_status":"closed","template":"","format":"standard","meta":{"_acf_changed":false,"_searchwp_excluded":""},"categories":[738191,22941],"tags":[25891,28391,28401,26611,24921,27491,24961],"industry":[],"product":[36831,36601],"class_list":["post-69281","blog","type-blog","status-publish","format-standard","hentry","category-developers","category-mapping","tag-arcgis","tag-geometry","tag-geometryengine","tag-gis","tag-javascript","tag-jsapi4","tag-web-gis","product-js-api-arcgis","product-developers"],"acf":{"short_description":"This is the second post in a three-part series exploring the client-side\u00a0GeometryEngine in the ArcGIS API for JavaScript. This series co...","flexible_content":[{"acf_fc_layout":"content","content":"<p>This is the second post in a <a href=\"http:\/\/blogs.esri.com\/esri\/arcgis\/tag\/geometryengine\/\">three-part series<\/a> exploring the client-side\u00a0<a href=\"https:\/\/developers.arcgis.com\/javascript\/jsapi\/esri.geometry.geometryengine-amd.html\">GeometryEngine<\/a> in the ArcGIS API for JavaScript. This series covers the following topics:<\/p>\n<ul>\n<li><a href=\"http:\/\/blogs.esri.com\/esri\/arcgis\/2015\/09\/09\/geometryengine-part-1-testing-spatial-relationships-and-editing\/\">Part 1: Testing spatial relationships and editing<\/a><\/li>\n<li>Part 2: Measurement<\/li>\n<li><a href=\"http:\/\/blogs.esri.com\/esri\/arcgis\/2015\/09\/23\/geometryengine-part-3-overlay-analysis\/\">Part 3: Overlay Analysis<\/a><\/li>\n<\/ul>\n<p><a href=\"http:\/\/blogs.esri.com\/esri\/arcgis\/2015\/09\/09\/geometryengine-part-1-testing-spatial-relationships-and-editing\/\">Last week<\/a> I gave an overview of <a href=\"https:\/\/developers.arcgis.com\/javascript\/jsapi\/esri.geometry.geometryengine-amd.html\">GeometryEngine<\/a> in the ArcGIS API for JavaScript and <a href=\"http:\/\/ekenes.github.io\/esri-js-samples\/ge-demo\/\">shared a sample<\/a> that showcases its ability to enhance the user experience of editing geometries in web applications. I also shared <a href=\"http:\/\/ekenes.github.io\/esri-js-samples\/ge-gs\/\">a second sample<\/a> to demonstrate its advantage over <a href=\"https:\/\/developers.arcgis.com\/javascript\/jsapi\/geometryservice-amd.html\">GeometryService<\/a> in performance and speed.<\/p>\n<p>Most of GeometryEngine\u2019s methods can be categorized into one of three groups: testing spatial relationships, measurement, and overlay analysis.<\/p>\n<p>In this post, we\u2019ll take a look at some of the methods GeometryEngine exposes that allow one to measure lengths, areas, and distances. The <a href=\"http:\/\/ekenes.github.io\/esri-js-samples\/ge-demo\/\">editing sample<\/a> mentioned in the <a href=\"http:\/\/blogs.esri.com\/esri\/arcgis\/2015\/09\/09\/geometryengine-part-1-testing-spatial-relationships-and-editing\/\">first post<\/a> uses <a href=\"https:\/\/developers.arcgis.com\/javascript\/jsapi\/esri.geometry.geometryengine-amd.html#geodesicarea\">geodesicArea<\/a> to perform area calculations. Other measurement methods include <a href=\"https:\/\/developers.arcgis.com\/javascript\/jsapi\/esri.geometry.geometryengine-amd.html#distance\">distance<\/a>, <a href=\"https:\/\/developers.arcgis.com\/javascript\/jsapi\/esri.geometry.geometryengine-amd.html#planarlength\">planarLength<\/a>, <a href=\"https:\/\/developers.arcgis.com\/javascript\/jsapi\/esri.geometry.geometryengine-amd.html#geodesiclength\">geodesicLength<\/a>, <a href=\"https:\/\/developers.arcgis.com\/javascript\/jsapi\/esri.geometry.geometryengine-amd.html#planararea\">planarArea<\/a>, <a href=\"https:\/\/developers.arcgis.com\/javascript\/jsapi\/esri.geometry.geometryengine-amd.html#buffer\">buffer<\/a>, and <a href=\"https:\/\/developers.arcgis.com\/javascript\/jsapi\/esri.geometry.geometryengine-amd.html#geodesicbuffer\">geodesicBuffer<\/a>.<\/p>\n<p>After glancing through this list, one of the first questions that come to mind is <em>Why are there geodesic and planar versions of the same method?<\/em><\/p>\n<p>In short, the geodesic method approaches measurement differently from the planar method and thus may generate different results depending on the geometry and the location. To illustrate this, I used the <a href=\"https:\/\/developers.arcgis.com\/javascript\/beta\/\">4.0 beta 1 version<\/a> of the ArcGIS JavaScript API to create <a href=\"http:\/\/ekenes.github.io\/esri-js-samples\/ge-geodesic-planar-buffer\/\">the following sample<\/a> comparing planar and geodesic buffers.<\/p>\n<p><a href=\"http:\/\/ekenes.github.io\/esri-js-samples\/ge-geodesic-planar-buffer\/\"><strong>View Sample: Geodesic vs. Planar buffers<\/strong><\/a><br \/>\n<a title=\"Click the image to open the sample\" href=\"http:\/\/ekenes.github.io\/esri-js-samples\/ge-geodesic-planar-buffer\/\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-54245 alignnone\" src=\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2015\/09\/ge-buffers.png\" alt=\"Click image to open sample\" width=\"500\" height=\"374\" \/><\/a><\/p>\n<p>Notice how the shapes of the geodesic buffers (symbolized in green) become more distorted as they approach the poles, while the shapes of the planar buffers (symbolized in orange) are all equal. The only location where both geodesic and planar buffers are exactly the same size and shape is the equator.<\/p>\n<p>So what\u2019s going on here? It all relates to the shape of the earth and how we attempt to represent it with various types of projections.<\/p>\n<h1>Paying the price: distortion in map projections<\/h1>\n<p>First of all, we need to remember the earth is a <a href=\"https:\/\/en.wikipedia.org\/wiki\/Geoid\">geoid<\/a> (spherical in nature) and maps often represent the earth on flat two-dimensional (or planar) surfaces. Projecting features and boundaries on the earth to a planar surface makes calculations such as area and length easier to perform. Planar measurement uses Cartesian coordinates to measure Euclidean distances on the projected plane. However, projections pay the price of one or more distortions to area, distance (length), shape, or direction.<\/p>\n<p>Since the equator is the only place where Web Mercator minimizes distortion to shape and size, the planar buffer is only accurate on the equator. As planar buffers are drawn away from the equator, they preserve their shape; but doing so severely distorts their true location and area when drawn near the poles.<\/p>\n<h1>Geodesic tools: why and when to use them<\/h1>\n<p>Unlike planar measurements, geodesic methods use an algorithm that takes into account the curvature of the earth. The calculations are more complex, but the results are more accurate throughout the globe. Therefore, the geodesic buffers are actually more correct than planar buffers despite their lopsided shape near the poles. The <a href=\"http:\/\/ekenes.github.io\/esri-js-samples\/ge-length\/\">following sample<\/a> illustrates this same principle while measuring lines drawn on the map.<\/p>\n<p><a href=\"http:\/\/ekenes.github.io\/esri-js-samples\/ge-length\/\"><strong>View sample: geodesic and planar length in Web Mercator<\/strong><\/a><br \/>\n<a title=\"Click the image to open the sample\" href=\"http:\/\/ekenes.github.io\/esri-js-samples\/ge-length\/\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-54246\" src=\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2015\/09\/ge-length.png\" alt=\"Click the image to open the sample\" width=\"500\" height=\"311\" \/><\/a><\/p>\n<p>Open the sample and draw a line near the equator (the dashed white line). Draw additional lines north and south of the equator at various scales. Notice the differing results between the <a href=\"https:\/\/developers.arcgis.com\/javascript\/jsapi\/esri.geometry.geometryengine-amd.html#geodesiclength\">geodesicLength<\/a> and <a href=\"https:\/\/developers.arcgis.com\/javascript\/jsapi\/esri.geometry.geometryengine-amd.html#planarlength\">planarLength<\/a> methods for the same line. It\u2019s pretty significant the farther lines are drawn away from the equator. A white transparent arc also draws alongside longer lines drawn north and south of the equator. This represents the <a href=\"https:\/\/en.wikipedia.org\/wiki\/Great_circle\">great circle<\/a> (or geodesic line) between the two end points of the line and represents the shortest path between the two points.<\/p>\n<p>When possible, geodesic methods should be used in favor of planar methods because of their ability to minimize distortion regardless of the location of the input geometry.<\/p>\n<h1>Planar tools: why and when to use them<\/h1>\n<p>If geodesic methods are so much better at measurement, why provide planar methods at all? In the case of GeometryEngine, the geodesic tools only support two spatial references \u2013 WGS84 (wkid 4326) and Web Mercator (wkid 3857). Planar methods on the other hand, only accept geometries with <a href=\"http:\/\/resources.arcgis.com\/en\/help\/arcgis-rest-api\/index.html#\/Projected_coordinate_systems\/02r3000000vt000000\/\">projected coordinate systems<\/a> (PCS). Since Web Mercator is a PCS, it may be used in planar measurements, but this isn\u2019t recommended as evidenced by the samples above.<\/p>\n<p>The following is the general rule to follow when measuring with GeometryEngine: <strong><em>use geodesic methods when working in WGS84 or Web Mercator and use planar methods when working with data defined in a PCS.<\/em><\/strong> Some localized coordinate systems, such as <a href=\"https:\/\/en.wikipedia.org\/wiki\/Universal_Transverse_Mercator_coordinate_system\">UTM<\/a> and <a href=\"https:\/\/en.wikipedia.org\/wiki\/State_Plane_Coordinate_System\">State Plane<\/a>, are effective at minimizing all four distortion types. So as long as the data are located within the bounds of a single projection (and zone if applicable), planar calculations should yield results pretty close to reality.<\/p>\n<p>This rule also implies that one uses the proper projection for their data prior to using planar measurement methods. Failure to respect the bounds or limitations of map projections will likely yield inaccurate results. The spatial reference of the map in <a href=\"http:\/\/ekenes.github.io\/esri-js-samples\/ge-length\/state-plane.html\">the following sample<\/a>, for example, is in the Illinois East zone of the State Plane PCS. Once the map loads, the user can create geometries (in this case, lines) anywhere on the map.<\/p>\n<p><a href=\"http:\/\/ekenes.github.io\/esri-js-samples\/ge-length\/state-plane.html\"><strong>View sample: Planar measurement in a PCS<\/strong><\/a><br \/>\n<a title=\"Click the image to open the sample\" href=\"http:\/\/ekenes.github.io\/esri-js-samples\/ge-length\/state-plane.html\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-54247\" src=\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2015\/09\/state-plane.png\" alt=\"Click the image to open the sample\" width=\"500\" height=\"353\" \/><\/a><\/p>\n<p>The area shaded in red depicts the Illinois East zone of the State Plane coordinate system. As long as geometries are created within these bounds, the planar length will be accurate and equal to geodesic measurements made using GeometryService. Creating geometries outside the zone, however, will produce measurements that are inaccurate. If one needs to create and measure geometries that span different zones, a different projection should be used such as Web Mercator, which allows for measuring geometries anywhere using a geodesic algorithm.<\/p>\n<h1>Other coordinate systems<\/h1>\n<p>While GeometryEngine provides methods for quick and easy calculations of length, area, and buffers client-side, there are spatial references that GeometryEngine does not support. These include all <a href=\"http:\/\/resources.arcgis.com\/en\/help\/arcgis-rest-api\/index.html#\/Geographic_coordinate_systems\/02r300000105000000\/\">geographic coordinate systems<\/a> (GCS) other than WGS84. When measurements or buffers need to be created using data in any <a href=\"http:\/\/resources.arcgis.com\/en\/help\/arcgis-rest-api\/index.html#\/Geographic_coordinate_systems\/02r300000105000000\/\">GCS other than WGS84<\/a>, <a href=\"https:\/\/developers.arcgis.com\/javascript\/jsapi\/geometryservice-amd.html\">GeometryService<\/a> should be used.<\/p>\n<p>GeometryService also is the best alternative when working with data defined in a PCS that doesn\u2019t play well with Euclidean measurements, such as the spatial reference in <a href=\"http:\/\/ekenes.github.io\/esri-js-samples\/ge-length\/homosoline.html\">the following sample<\/a>.<\/p>\n<p><a href=\"http:\/\/ekenes.github.io\/esri-js-samples\/ge-length\/homosoline.html\"><strong>View sample: planar length in Goode&#8217;s Homosoline<\/strong><\/a><br \/>\n<a title=\"Click the image to open the sample\" href=\"http:\/\/ekenes.github.io\/esri-js-samples\/ge-length\/homosoline.html\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-54248\" src=\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2015\/09\/homosoline.png\" alt=\"Click image to open sample\" width=\"500\" height=\"289\" \/><\/a><\/p>\n<p>Similar to Web Mercator, the <a href=\"https:\/\/en.wikipedia.org\/wiki\/Goode_homolosine_projection\">Goode&#8217;s Homosoline<\/a> projection only allows for accurate length measurements on the equator. Since GeometryEngine&#8217;s <a href=\"https:\/\/developers.arcgis.com\/javascript\/jsapi\/esri.geometry.geometryengine-amd.html#geodesiclength\">geodesicLength<\/a> method doesn&#8217;t support this spatial reference, GeometryService is the only alternative for providing accurate length measurements throughout the projection.<\/p>\n<p>In these cases, if measurement plays a critical part in the application, the data should either be defined in a PCS more suited for measurement, or GeometryService should be used. Accurate measurement is a necessity in any GIS. Because it handles all computation client-side, GeometryEngine makes measuring and buffering fast and simple.<\/p>\n<p>Keep an eye out next week for the final part of the <a href=\"http:\/\/blogs.esri.com\/esri\/arcgis\/tag\/geometryengine\/\">GeometryEngine series<\/a> when we take a look at some of its analysis and overlay methods.<\/p>\n"}],"authors":[{"ID":6561,"user_firstname":"Kristian","user_lastname":"Ekenes","nickname":"Kristian Ekenes","user_nicename":"kekenes","display_name":"Kristian Ekenes","user_email":"KEkenes@esri.com","user_url":"https:\/\/github.com\/ekenes","user_registered":"2018-03-02 00:18:32","user_description":"Kristian Ekenes is a Principal Product Engineer at Esri specializing in data visualization on the web. He works on the ArcGIS Maps SDK for JavaScript, ArcGIS Arcade, and Map Viewer in ArcGIS Online. Kristian's work focuses on researching and developing new and innovative data visualization capabilities of geospatial data in web maps, Arcade integration in web maps, and applications of generative AI assistants in web maps. Prior to joining Esri, he worked as a GIS Specialist for an environmental consulting company. Kristian has degrees from Brigham Young University and Arizona State University.","user_avatar":"<img data-del=\"avatar\" src='https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/10\/ekenes-zurich-213x200.png' class='avatar pp-user-avatar avatar-96 photo ' height='96' width='96'\/>"}],"related_articles":"","card_image":false,"wide_image":false},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.9 (Yoast SEO v25.9) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>GeometryEngine part 2: Measurement<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.esri.com\/arcgis-blog\/products\/developers\/developers\/geometryengine-part-2-measurement\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"GeometryEngine part 2: Measurement\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.esri.com\/arcgis-blog\/products\/developers\/developers\/geometryengine-part-2-measurement\" \/>\n<meta property=\"og:site_name\" content=\"ArcGIS Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/esrigis\/\" \/>\n<meta property=\"article:modified_time\" content=\"2023-03-15T21:57:23+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:site\" content=\"@ESRI\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":[\"Article\",\"BlogPosting\"],\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/developers\/developers\/geometryengine-part-2-measurement#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/developers\/developers\/geometryengine-part-2-measurement\"},\"author\":{\"name\":\"Kristian Ekenes\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/5469f723fbfb78138efbb1da56e6aa9b\"},\"headline\":\"GeometryEngine part 2: Measurement\",\"datePublished\":\"2015-09-16T04:00:02+00:00\",\"dateModified\":\"2023-03-15T21:57:23+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/developers\/developers\/geometryengine-part-2-measurement\"},\"wordCount\":3,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#organization\"},\"keywords\":[\"ArcGIS\",\"geometry\",\"GeometryEngine\",\"GIS\",\"JavaScript\",\"jsapi4\",\"web GIS\"],\"articleSection\":[\"Developers\",\"Mapping\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.esri.com\/arcgis-blog\/products\/developers\/developers\/geometryengine-part-2-measurement#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/developers\/developers\/geometryengine-part-2-measurement\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/developers\/developers\/geometryengine-part-2-measurement\",\"name\":\"GeometryEngine part 2: Measurement\",\"isPartOf\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#website\"},\"datePublished\":\"2015-09-16T04:00:02+00:00\",\"dateModified\":\"2023-03-15T21:57:23+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/developers\/developers\/geometryengine-part-2-measurement#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.esri.com\/arcgis-blog\/products\/developers\/developers\/geometryengine-part-2-measurement\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/developers\/developers\/geometryengine-part-2-measurement#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.esri.com\/arcgis-blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"GeometryEngine part 2: Measurement\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#website\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/\",\"name\":\"ArcGIS Blog\",\"description\":\"Get insider info from Esri product teams\",\"publisher\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.esri.com\/arcgis-blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#organization\",\"name\":\"Esri\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/04\/Esri.png\",\"contentUrl\":\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/04\/Esri.png\",\"width\":400,\"height\":400,\"caption\":\"Esri\"},\"image\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/esrigis\/\",\"https:\/\/x.com\/ESRI\",\"https:\/\/www.linkedin.com\/company\/5311\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/5469f723fbfb78138efbb1da56e6aa9b\",\"name\":\"Kristian Ekenes\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/10\/ekenes-zurich-213x200.png\",\"contentUrl\":\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/10\/ekenes-zurich-213x200.png\",\"caption\":\"Kristian Ekenes\"},\"description\":\"Kristian Ekenes is a Principal Product Engineer at Esri specializing in data visualization on the web. He works on the ArcGIS Maps SDK for JavaScript, ArcGIS Arcade, and Map Viewer in ArcGIS Online. Kristian's work focuses on researching and developing new and innovative data visualization capabilities of geospatial data in web maps, Arcade integration in web maps, and applications of generative AI assistants in web maps. Prior to joining Esri, he worked as a GIS Specialist for an environmental consulting company. Kristian has degrees from Brigham Young University and Arizona State University.\",\"sameAs\":[\"https:\/\/github.com\/ekenes\",\"https:\/\/www.linkedin.com\/in\/kristian-ekenes\/\",\"https:\/\/x.com\/kekenes\"],\"gender\":\"male\",\"jobTitle\":\"Principal Product Engineer\",\"worksFor\":\"Esri\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/author\/kekenes\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"GeometryEngine part 2: Measurement","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.esri.com\/arcgis-blog\/products\/developers\/developers\/geometryengine-part-2-measurement","og_locale":"en_US","og_type":"article","og_title":"GeometryEngine part 2: Measurement","og_url":"https:\/\/www.esri.com\/arcgis-blog\/products\/developers\/developers\/geometryengine-part-2-measurement","og_site_name":"ArcGIS Blog","article_publisher":"https:\/\/www.facebook.com\/esrigis\/","article_modified_time":"2023-03-15T21:57:23+00:00","twitter_card":"summary_large_image","twitter_site":"@ESRI","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":["Article","BlogPosting"],"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/developers\/developers\/geometryengine-part-2-measurement#article","isPartOf":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/developers\/developers\/geometryengine-part-2-measurement"},"author":{"name":"Kristian Ekenes","@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/5469f723fbfb78138efbb1da56e6aa9b"},"headline":"GeometryEngine part 2: Measurement","datePublished":"2015-09-16T04:00:02+00:00","dateModified":"2023-03-15T21:57:23+00:00","mainEntityOfPage":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/developers\/developers\/geometryengine-part-2-measurement"},"wordCount":3,"commentCount":0,"publisher":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#organization"},"keywords":["ArcGIS","geometry","GeometryEngine","GIS","JavaScript","jsapi4","web GIS"],"articleSection":["Developers","Mapping"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.esri.com\/arcgis-blog\/products\/developers\/developers\/geometryengine-part-2-measurement#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/developers\/developers\/geometryengine-part-2-measurement","url":"https:\/\/www.esri.com\/arcgis-blog\/products\/developers\/developers\/geometryengine-part-2-measurement","name":"GeometryEngine part 2: Measurement","isPartOf":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#website"},"datePublished":"2015-09-16T04:00:02+00:00","dateModified":"2023-03-15T21:57:23+00:00","breadcrumb":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/developers\/developers\/geometryengine-part-2-measurement#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.esri.com\/arcgis-blog\/products\/developers\/developers\/geometryengine-part-2-measurement"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/developers\/developers\/geometryengine-part-2-measurement#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.esri.com\/arcgis-blog\/"},{"@type":"ListItem","position":2,"name":"GeometryEngine part 2: Measurement"}]},{"@type":"WebSite","@id":"https:\/\/www.esri.com\/arcgis-blog\/#website","url":"https:\/\/www.esri.com\/arcgis-blog\/","name":"ArcGIS Blog","description":"Get insider info from Esri product teams","publisher":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.esri.com\/arcgis-blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.esri.com\/arcgis-blog\/#organization","name":"Esri","url":"https:\/\/www.esri.com\/arcgis-blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/04\/Esri.png","contentUrl":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/04\/Esri.png","width":400,"height":400,"caption":"Esri"},"image":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/esrigis\/","https:\/\/x.com\/ESRI","https:\/\/www.linkedin.com\/company\/5311\/"]},{"@type":"Person","@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/5469f723fbfb78138efbb1da56e6aa9b","name":"Kristian Ekenes","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/image\/","url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/10\/ekenes-zurich-213x200.png","contentUrl":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/10\/ekenes-zurich-213x200.png","caption":"Kristian Ekenes"},"description":"Kristian Ekenes is a Principal Product Engineer at Esri specializing in data visualization on the web. He works on the ArcGIS Maps SDK for JavaScript, ArcGIS Arcade, and Map Viewer in ArcGIS Online. Kristian's work focuses on researching and developing new and innovative data visualization capabilities of geospatial data in web maps, Arcade integration in web maps, and applications of generative AI assistants in web maps. Prior to joining Esri, he worked as a GIS Specialist for an environmental consulting company. Kristian has degrees from Brigham Young University and Arizona State University.","sameAs":["https:\/\/github.com\/ekenes","https:\/\/www.linkedin.com\/in\/kristian-ekenes\/","https:\/\/x.com\/kekenes"],"gender":"male","jobTitle":"Principal Product Engineer","worksFor":"Esri","url":"https:\/\/www.esri.com\/arcgis-blog\/author\/kekenes"}]}},"text_date":"September 16, 2015","author_name":"Kristian Ekenes","author_page":"https:\/\/www.esri.com\/arcgis-blog\/author\/kekenes","custom_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2025\/08\/Newsroom-Keyart-Wide-1920-x-1080.jpg","primary_product":"ArcGIS Maps SDK for JavaScript","tag_data":[{"term_id":25891,"name":"ArcGIS","slug":"arcgis","term_group":0,"term_taxonomy_id":25891,"taxonomy":"post_tag","description":"","parent":0,"count":209,"filter":"raw"},{"term_id":28391,"name":"geometry","slug":"geometry","term_group":0,"term_taxonomy_id":28391,"taxonomy":"post_tag","description":"","parent":0,"count":9,"filter":"raw"},{"term_id":28401,"name":"GeometryEngine","slug":"geometryengine","term_group":0,"term_taxonomy_id":28401,"taxonomy":"post_tag","description":"","parent":0,"count":3,"filter":"raw"},{"term_id":26611,"name":"GIS","slug":"gis","term_group":0,"term_taxonomy_id":26611,"taxonomy":"post_tag","description":"","parent":0,"count":73,"filter":"raw"},{"term_id":24921,"name":"JavaScript","slug":"javascript","term_group":0,"term_taxonomy_id":24921,"taxonomy":"post_tag","description":"","parent":0,"count":151,"filter":"raw"},{"term_id":27491,"name":"jsapi4","slug":"jsapi4","term_group":0,"term_taxonomy_id":27491,"taxonomy":"post_tag","description":"","parent":0,"count":111,"filter":"raw"},{"term_id":24961,"name":"web GIS","slug":"web-gis","term_group":0,"term_taxonomy_id":24961,"taxonomy":"post_tag","description":"","parent":0,"count":19,"filter":"raw"}],"category_data":[{"term_id":738191,"name":"Developers","slug":"developers","term_group":0,"term_taxonomy_id":738191,"taxonomy":"category","description":"","parent":0,"count":426,"filter":"raw"},{"term_id":22941,"name":"Mapping","slug":"mapping","term_group":0,"term_taxonomy_id":22941,"taxonomy":"category","description":"","parent":0,"count":2698,"filter":"raw"}],"product_data":[{"term_id":36831,"name":"ArcGIS Maps SDK for JavaScript","slug":"js-api-arcgis","term_group":0,"term_taxonomy_id":36831,"taxonomy":"product","description":"","parent":36601,"count":363,"filter":"raw"},{"term_id":36601,"name":"Developers","slug":"developers","term_group":0,"term_taxonomy_id":36601,"taxonomy":"product","description":"","parent":0,"count":765,"filter":"raw"}],"primary_product_link":"https:\/\/www.esri.com\/arcgis-blog\/?s=#&products=js-api-arcgis","_links":{"self":[{"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/blog\/69281","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/blog"}],"about":[{"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/types\/blog"}],"author":[{"embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/users\/6561"}],"replies":[{"embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/comments?post=69281"}],"version-history":[{"count":0,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/blog\/69281\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/media?parent=69281"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/categories?post=69281"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/tags?post=69281"},{"taxonomy":"industry","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/industry?post=69281"},{"taxonomy":"product","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/product?post=69281"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}