More

ArcGIS Server Object Extenstion REST Endpoint That Supports GET and POST


I have a Server Object Extension for ArcGIS Server 10.0, that implements IRESTRequestHandler. The extension contains many individual RestOperations. By default each RestOperation supports HTTP GETs when using the extension. In the RestOperation constructor, there is a parameter called postOnly, which is a boolean. If I set postOnly = true, then the endpoint will only support HTTP POSTs, and will throw an exception if you attempt to use a GET. I would like to create an endpoint that supports both GET and POST. If you interrogate some of the supported methods on a standard MapService like Find and Identify, you will notice these support both GET and POST:

  • http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Demographics/ESRI_Census_USA/MapServer/identify

  • http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Demographics/ESRI_Census_USA/MapServer/find

Does anyone know of a way to implement this on a custom Server Object Extension?


I just tested a GET and POST request with my custom SOE, and it accepts both GET and POST requests just fine without any special configuration.postOnly=trueas you know will force POST only requests, and should be used when data is modified. What kind of a response do you get when you try and submit a POST request to your SOE?


ArcGIS Server comes with a variety of preconfigured services that help you perform common tasks.

Caching controllers

The CachingControllers service helps process map, image, and globe caching jobs. The maximum number of instances you allow for this service determines how many cache jobs can run at one time.

The CachingControllers service works together with the CachingTools service. Both must be running in order to build caches. Both must run on the same cluster.

Caching tools

Instead of your map, globe, or image service being heavily utilized during caching, the work is offloaded to a geoprocessing service named CachingTools . This service is preconfigured in the System folder when you create your ArcGIS Server site. You can confine the CachingTools service to run within a defined cluster of machines, thus freeing up other machines in your site to quickly respond to service requests.

The CachingTools service is started by default. You should leave this service running so that it can respond to caching requests. If the service is stopped or unavailable, caching requests will fail. You cannot delete the CachingTools service and you must leave its execution mode as Asynchronous .

The CachingTools service works together with the CachingControllers service. Both must be running in order to build caches. Both must run on the same cluster.

Geometry service

The preconfigured Geometry service can perform geometric calculations such as buffering, simplifying, calculating areas and lengths, and projecting. It also includes functions used in web editing. If you are building a web application with the ArcGIS Viewer for Flex , ArcGIS Viewer for Silverlight , or the ArcGIS web APIs, you can reference the geometry service through its REST endpoint to perform geometric calculations and editing in your web application.

The geometry service is preconfigured in the Utilities folder and is stopped by default. You must explicitly start it before you can use it.

Printing tools

PrintingTools is a geoprocessing service that you can deploy to help you print web maps. When you develop your web applications, for example, with the ArcGIS web APIs, you can call the PrintingTools service and get a printable image of high cartographic quality in return from a map service.

The PrintingTools service is preconfigured in the Utilities folder. It is stopped by default. You must explicitly start the PrintingTools service before you can use it.

Publishing tools

When you publish a service using Manager or ArcGIS for Desktop , ArcGIS Server uses a geoprocessing service named PublishingTools to upload the service definition file, unpack it on the server, and deploy it for use as a service.

The PublishingTools service is preconfigured in the System folder and is started by default. You should leave this service running so that it can respond to publishing requests. If the PublishingTools service is stopped or unavailable, service publishing will fail. You cannot delete the PublishingTools service.

Reporting tools

A geoprocessing service named ReportingTools helps generate reports on the status of your map and image service caching jobs.

This service is preconfigured in the System folder and is started by default. You should leave this service running so that it is available to report the status of caching jobs. If the ReportingTools service is stopped or unavailable, you will not be able to view the status of your caching job. You cannot delete the ReportingTools service.

Sync tools

You can enable a sync capability on feature services, which allows clients to download a local copy of the data to use when offline, and synchronize changes between the client and feature service when the client is back online. These download and synchronization operations can be run synchronously or asynchronously. The SyncTools service is used when sync operations are run asynchronously.

The SyncTools geoprocessing service is preconfigured in the ArcGIS Server System folder and is started by default. You should leave this service running if you have sync-enabled feature services. If the SyncTools geoprocessing service is stopped or unavailable, sync operations will fail when run asynchronously. You cannot delete the SyncTools service.

SampleWorldCities map service

The SampleWorldCities map service is provided to allow you to preview the functionality of ArcGIS Server. You can click on thumbnail of this map service in ArcGIS Server Manager to immediately display it in a web application. You can also consume this sample in ArcGIS clients just like any other map service.

The SampleWorldCities map service is preconfigured in the Site (root) folder and is started by default. If you no longer need the service, you can delete it from your ArcGIS Server site.

Search service

The preconfigured Search service can create a searchable index of your organization's GIS content for use on the local network. For example, you can allow the search service to index your GIS data folders, then allow ArcMap users in your organization to reference the service when they search for data.

The search service is preconfigured in the Utilities folder and is stopped by default. You must explicitly start it before you can use it.


ArcGIS Cloud-Native Opportunities

The following are just a few examples of opportunities to use Cloud-Native technologies with ArcGIS.

ArcGIS Cloud SysOps & DevOps

Provision and Manage GIS Cloud Resources

Using cloud native offerings, such as AWS CloudFormation, developers and businesses can easily create and manage all the necessary and related cloud infrastructure to support complex Enterprise GIS systems.

This native cloud functionality means new very complex Enterprise GIS systems can be made available for production, testing, or development within a matter of hours. They can be torn down faster. This can be used for GIS modeling of large data workloads, testing new apps, or processing of spatial data.

Esri provides CloudFormation templates to deploy ArcGIS Enterprise on AWS.

  • A single machine ArcGIS Enterprise deployment
  • A highly available ArcGIS Enterprise deployment for disaster recovery purposes
  • A highly available ArcGIS Server site
  • A single-machine ArcGIS GeoEvent Server site
  • A single-machine ArcGIS Mission Server site
  • An ArcGIS Notebook Server site
  • A highly available, single-machine ArcGIS Server site

In addition to CloudFormation, AWS offers Elastic Beanstalk, which provides an environment where you can easily deploy and run applications in the cloud. It differs from CloudFormation as it is integrated with developer tools and provides a one-stop experience for managing application lifecycle. If your GIS workloads can be managed as Elastic Beanstalk workloads, you can enjoy a more turn-key experience in creating and updating applications. If your GIS app requirements dictate more custom control, the additional functionality of CloudFormation gives you more options to control your workloads.

Monitoring GIS Cloud Systems

With native cloud offerings, you gain system-wide visibility into resource utilization, application performance, and operational health. You can create alarms that watch metrics and send notifications or automatically make changes to the resources you are monitoring when a threshold is breached. For example, you can monitor your GIS Server(s) CPU usage and disk reads and writes of your Amazon EC2 instances and then use this data to determine whether you should launch additional GIS instances to handle increased load. You can use this data to stop under-used instances to save money. You can push ArcGIS metrics from ArcGIS server log files or API calls into cloud monitoring tools for one consolidated monitoring system. See AWS CloudWatch.

ArcGIS Cloud Compute Opportunities

ArcGIS Server Elastic Scaling

Adding Auto Scaling to your ArcGIS application architecture is one way to maximize the benefits of the Cloud. This is an easy way to scale ArcGIS horizontally improving reliability, availability, and reducing total cost of ownership.

When you use Amazon EC2 Auto Scaling, your applications gain the following benefits:

Better fault tolerance

Amazon EC2 Auto Scaling can detect when an instance is unhealthy, terminate it, and launch an instance to replace it.

You can also configure Amazon EC2 Auto Scaling to use multiple Availability Zones. If one Availability Zone becomes unavailable, Amazon EC2 Auto Scaling can launch instances in another one to compensate.

Fault tolerance across AWS regions. If you require even stronger fault tolerance beyond Availability Zones, Amazon Route 53 allows low latency routing across AWS regions. With Amazon Route 53 Latency Based Routing (LBR) feature, instances in several AWS regions can be configured and have requests from end-users automatically routed to the region with the lowest latency.

Better availability

Amazon EC2 Auto Scaling helps ensure that your application always have the right amount of capacity to handle the current traffic demand.

For instance with ArcGIS Server, Auto Scaling allows you to spin up new instances of ArcGIS Server based on average RAM or CPU utilization thresholds across your instance stack. It is known that a number of ArcSOC.exe instances can consume high memory (RAM) resources, causing ArcGIS performance issues. Instead of making trade-offs with ArcGIS Server configuration such as setting services to use the shared instance pool or setting the minimum number of instances to 𔃰’, use EC2 Auto Scaling to meet performance and capacity needs. The ArcGIS Server configuration fixes come at operational costs, i.e. GIS services sharing individual ArcSOC.exe processes may fail based on other GIS service failures. And, setting the minimum number of instances to zero may result in delayed performance as it will take time for new ArcSOCs to spin up after a request. There is a reason why these fixes are not the default ArcGIS Server configuration settings.

Better cost management

Amazon EC2 Auto Scaling can dynamically increase and decrease capacity as needed. Because you pay for the EC2 instances you use, you save money by launching instances when they are needed and terminating them when they aren’t.

Elastic Load Balancing distributes incoming application or network traffic across multiple targets, such as Amazon EC2 instances, containers, and IP addresses, in multiple Availability Zones. Elastic Load Balancing scales your load balancer as traffic to your application changes over time. It can automatically scale to the vast majority of workloads.

ArcGIS Server High Availability

Amazon S3 can be employed to store any type of object which allows for uses like storage for Internet applications, data backups, disaster recovery, data archives, data lakes for analytics, and hybrid cloud storage.

Amazon DynamoDB is a key-value and document database that delivers single-digit millisecond performance at any scale. It’s a fully managed, multiregion, multimaster, durable database with built-in security, backup and restore, and in-memory caching for internet-scale applications.

Multiple EC2 instances with ArcGIS Server may access the same files stored in an Amazon S3 bucket or DynamoDB.

GIS Container Workloads

ArcGIS Enterprise on Kubernetes

Planned for May 2021, as part of the ArcGIS 2021 release in Q2.

Migrating your GIS and business workloads to AWS Lambda eliminates servers (and server environments) to automatically scale, increase speed, and provide consistent performance. And, the cost is very low. You pay only for the compute time you consume.

AWS Lambda is a serverless compute service that runs your code in response to events and automatically manages the underlying compute resources for you. You can use AWS Lambda to extend other AWS services with custom logic, or create your own back-end services that operate at AWS scale, performance, and security.

Amazon API Gateway is an AWS service for creating, publishing, maintaining, monitoring, and securing REST, HTTP, and WebSocket APIs at any scale. You can create a web API with an HTTP endpoint for your Lambda function by using Amazon API Gateway.

GIS Cloud Data Storage Opportunities

Optimize Map Cache Storage and Delivery

You can configure ArcGIS Server to build and store map cache tiles on Amazon S3. Then, using Amazon CloudFront, push your tile services to CDNs for super fast delivery. If your map caches do not change frequently, this is an excellent option. With Amazon S3, you only pay for what you use. It is an ideal service for backing up caches, as well as any type of data.

CloudFront delivers your content through a worldwide network of data centers called edge locations. When a user requests content that you’re serving with CloudFront, the user is routed to the edge location that provides the lowest latency (time delay), so that content is delivered with the best possible performance.

Amazon S3 can be employed to store any type of object which allows for uses like storage for Internet applications, data backups, disaster recovery, data archives, data lakes for analytics, and hybrid cloud storage.

Amazon CloudFront is a fast content delivery network (CDN) service that securely delivers data, videos, applications, and APIs to customers globally with low latency, high transfer speeds, all within a developer-friendly environment.

Fast Content Delivery for Static Mapping Web Apps

You can host your static web mapping apps in S3 and use CloudFront for the fastest and most scalable architecture. Hosting your web apps in Amazon S3 relieves the burden of managing and paying for a web server. The cost is negligible.

Amazon S3 can be employed to store any type of object which allows for uses like storage for Internet applications, data backups, disaster recovery, data archives, data lakes for analytics, and hybrid cloud storage.

Amazon CloudFront is a fast content delivery network (CDN) service that securely delivers data, videos, applications, and APIs to customers globally with low latency, high transfer speeds, all within a developer-friendly environment.

ArcGIS Distributed Analytics with Structured and Unstructured Storage

Challenges associated with Deep Learning and Big Data include: managing enormous amounts of structured and unstructured data, and getting the data as close as possible to the analytics for optimal performance. Cloud-Native services that facilitate Data Lakes enable this process.

A data lake is a centralized, curated, and secured repository that stores all your data, both in its original form and prepared for analysis. They can be attached to multiple cloud server instances.

You can expose AWS Lake Formation data mainly via Amazon Athena, Amazon Redshift, and Amazon EMR.

Both Athena and Redshift support geometry data types no geodatabase support. It appears Athena supports a Java ESRI Geometry API.

By far, EMR looks like the best (and easiest) solution using Apache Hadoop. Folks have been creating big data analysis solutions with Esri and Hadoop for a couple years.

GIS Tools for Hadoop works with big spatial data (big data with location) and allows you to complete spatial analysis using the power of distributed processing in Hadoop.

The GIS Tools for Hadoop toolkit allows you to leverage the Hadoop framework to complete spatial analysis on spatial data for example:

  1. Run a filter and aggregate operations on billions of spatial data records based on location.
  2. Define new areas represented as polygons, and run a point in polygon analysis on billions of spatial data records inside Hadoop.
  3. Visualize analysis results on a map and apply informative symbology.
  4. Integrate your maps in reports, or publish them as map applications online.

In some scenarios, you can expose S3 data via Storage Gateway to mount drives on EC2 instances running ArcGIS.

AWS Lake Formation is a service that makes it easy to set up a secure data lake in a matter of days.

Amazon S3 can be employed to store any type of object. This allows for uses like storage for Internet applications, data backups, disaster recovery, data archives, data lakes for analytics, and hybrid cloud storage.

Flexible Cloud Raster Data Stores for Image Server

Managing large and ever expanding dynamic raster datasets is a classic problem. Native cloud storage offerings solve much of the headaches.

Image services reference rasters defined in mosaic datasets or can also directly reference a single raster. The rasters may be stored on server–accessible storage, such as a NAS or SAN, using a raster data store, or using raster proxies.

Raster data stores are connections to file or cloud storage defined with suitable credentials to enable the ArcGIS Image Server sites to read and write the rasters.

Starting with ArcGIS 10.7, supported raster data stores include Amazon Simple Storage Service (S3), Microsoft Azure Blob storage, and Alibaba Cloud Object Storage Service (OSS). Raster data stores can be set up to include local caching of data to speed up access.

Raster proxies are an alternative method of connecting to multiple storage systems. They are small XML files that ArcGIS Image Server recognizes as local files, but the raster proxies reference imagery in cloud storage and provide local caching.

Imagery storage in the cloud

Cloud offerings make management of raster data more cost effective and easier to maintain.

One challenge for implementing a robust ArcGIS Image Server architecture is managing imagery file-based data. ArcGIS Image Server allows you to assemble, process, analyze, and manage large collections of overlapping, multiresolution imagery and raster data from different sensors, sources, and time periods. It does this well. But, collecting, updating, adding, or managing raster file data on storage devices can be challenging and costly with large amounts of data. This is especially true for scenarios whereby you are continuously collecting (growing) your raster file footprint, or temporarily creating and disposing of large raster datasets through big data analysis, etc.

Flexible Raster Data Sources

ArcGIS Image services reference raster data defined in mosaic datasets. The rasters may be stored on server–accessible storage, such as a NAS or SAN, using a raster data store, or using raster proxies.

Raster proxies are an alternative method of connecting to multiple storage systems. They are small XML files that ArcGIS Image Server recognizes as local files, but the raster proxies reference imagery in cloud storage and provide local caching.

Scalable, Fully Managed Elastic File System for Image Server (Linux)

One challenge for implementing a robust ArcGIS Image Server architecture is managing imagery file-based data. ArcGIS Image Server allows you to assemble, process, analyze, and manage large collections of overlapping, multiresolution imagery and raster data from different sensors, sources, and time periods. It does this well. But, collecting, updating, adding, or managing raster file data on storage devices can be challenging and costly with large amounts of data. This is especially true for scenarios whereby you are continuously collecting (growing) your raster file footprint, or temporarily creating and disposing of large raster datasets through big data analysis, etc.

Amazon Elastic File System (Amazon EFS) provides a simple, scalable, fully managed, elastic NFS file system for use with AWS Cloud services and on-premises resources. It is built to scale on demand to petabytes without disrupting applications, growing and shrinking automatically as you add and remove files, eliminating the need to provision and manage capacity to accommodate growth.

Using Amazon EFS with ArcGIS Image Server on Linux saves maintenance time and costs by growing and shrinking automatically as you add and remove files. This results in profound cost savings as your GIS analysts no longer need to work with Cloud DevOps teams to continually analyze disk space, provision, decommission, and manage capacity. It is more efficient since you are paying for only the capacity that you are using, as opposed to allocating extra space in anticipation of future growth, while hoping that disk capacity calculations were correct and requirements do not change.

AWS DataSync is a data transfer service that makes it easy for you to automate moving data between on-premises storage and Amazon S3 or Amazon Elastic File System. The service enables one-time data migrations, recurring data processing workflows, and automated replication for data protection and recovery.

Large GIS, Raster, and System Data Transfers for Cloud Migration or On-Going Operations

Moving large GIS datasets to the cloud can be a challenge. Typically, these are raster type datasets. Establishing an AWS Direct Connect allows data to be transferred directly and quickly through dedicated physical connection. If the data needing to be transferred is for a one-time migration or not very frequently, AWS import/export services can be used to ship hard-drives. For very large datasets, AWS Snowball is a rugged physical device which can be used for data transfer and much more.

AWS Direct Connect makes it easy to establish a dedicated connection from an on-premises network to Amazon VPC. Using AWS Direct Connect, you can establish private connectivity between AWS and your data center, office, or collocated environment. This private connection can reduce network costs, increase bandwidth throughput, and provide a more consistent network experience than internet-based connections.

VM Import/Export enables you to easily import virtual machine images from your existing environment to Amazon EC2 instances and export them back to your on-premises environment. This offering allows you to leverage your existing investments in the virtual machines that you have built to meet your IT security, configuration management, and compliance requirements by bringing those virtual machines into Amazon EC2 as ready-to-use instances. You can also export imported instances back to your on-premises virtualization infrastructure, allowing you to deploy workloads across your IT infrastructure.

AWS Snowball uses secure, rugged devices so you can bring AWS computing and storage capabilities to your edge environments, and transfer data into and out of AWS. The service delivers you Snowball Edge devices with storage and optional Amazon EC2 and AWS IOT Greengrass compute in shippable, hardened, secure cases. With AWS Snowball, you bring cloud capabilities for machine learning, data analytics, processing, and storage to your edge, for migrations, short-term data collection, or even long-term deployments. AWS Snowball devices work with or without the internet, do not require a dedicated IT operator, and are designed to be used in remote environments.

Migrating Data Across Regions and Accounts. A VPC Peering connection is a networking connection between two VPCs that enables you to route traffic between them. Instances in either VPC can communicate with each other as if they are within the same network. You can create a VPC peering connection between your own VPCs, or with a VPC in another AWS account. The VPCs can be in different regions. This is a flexible option for sharing large datasets across AWS accounts.

Cloud Native Geodatabase

Moving your Enterprise Geodatabase to Amazon RDS has numerous advantages. Amazon RDS is easy to administer, highly scalable, available, durable, fast, secure, and inexpensive.

Amazon RDS supported Geodatabase RDMS

Supported RDS databases that also support ArcGIS geodatabases include: Microsoft SQL Server, PostgreSQL, and Amazon Aurora (PostgreSQL-Compatible Edition).

Unfortunately, it looks like Oracle is not supported currently by Esri.

Amazon RDS Geodatabase Anti-Patterns

With RDS, you no longer have full control or access over the database. If you need full access, then you need to manage your database on an EC2 instance or keep it on-premise.

If you are using a non-supported Geodatabase RDS, then you need to manage your database on an EC2 instance or keep it on-premise. Again, supported RDS databases that also support ArcGIS geodatabases include: Microsoft SQL Server, PostgreSQL, and Amazon Aurora (PostgreSQL-Compatible Edition).

Geodatabases in AWS instances are not intended to be accessed directly from on-premises ArcGIS clients as performance will be far slower than when the geodatabases are accessed from ArcGIS clients on AWS.

ArcGIS Enterprise in the cloud, Geodatabases on Amazon Web Services, Esri Online documentation

Given the statement above, you can have an efficient hybrid cloud where on-premise ArcGIS and Amazon RDS Geodatabase instances deliver reliable high performance user experiences. The ArcGIS online documentation is assuming an Internet connection. Using AWS Direct Connect, you can establish private connectivity between AWS and an on-premise datacenter, office, or colocation environment, which in many cases can reduce your network costs, increase bandwidth throughput, and provide a more consistent network experience than Internet-based connections. With AWS Direct Connect, you can create a high performance user experience with a hybrid cloud architecture.

If you have GIS Analysts using ArcGIS desktop apps as part of your architecture, there are several AWS technologies to bring them into the cloud eliminating any network performance issues.

Amazon WorkSpaces is a managed, secure Desktop-as-a-Service (DaaS) solution. You can use Amazon WorkSpaces to provision either Windows or Linux desktops in just a few minutes and quickly scale to provide thousands of desktops to workers across the globe. You can pay either monthly or hourly, just for the WorkSpaces you launch, which helps you save money when compared to traditional desktops and on-premises VDI solutions.

Lastly, at this time, ArcGIS supports only database-authenticated connections to AWS RDS Geodatabase instances.

Reasons to use Amazon RDS with an ArcGIS Geodatabase

RDS is a managed service where you do not have access to underlying EC2 instances (no root access) database access. But, you get the following fully managed service:

  • Security and patching of the DB instances.
  • Automated backup.
  • Software updates.
  • Easy scaling for storage and compute.
  • Multi-AZ option with synchronous replication.
  • Automatics failover for Multi-AZ option.
  • Read replicas option for read heavy workloads.

High Availability Approaches for AWS hosted ArcGIS Geodatabases

For High Availability (HA) architectures, Amazon Aurora is the best option over other Esri supported databases. Aurora is an AWS proprietary database which has far more cloud-native features baked into the AWS ecosystem. Two copies of data are kept in each Availability Zone (AZ) with a minimum of three AZ’s totaling six copies. Aurora can handle the loss of up to two copies of data without affecting DB write availability and up to three copies without affecting read availability. Aurora has cross-regional read replicas to improve disaster recovery posture, scale read operations in regions closer to your application users, and easily migrate from one region to another. Aurora can be enabled to span multiple AWS regions with the Global Database feature. The Multi-Master feature adds the ability to scale out read/write workloads across multiple AZs. Aurora is high performance with low cost.

If you use a different database, then you must enable Multi-AZ RDS for High Availability.

If the database runs on EC2, you must design the High Availability yourself.

Because they provide enhanced availability, Amazon recommends you use multi-AZ deployments for production systems. Be aware, though, that these deployments cost more to use per hour and for storage than other deployments. Consult the Amazon RDS pricing guide for more information.

ArcGIS Enterprise in the cloud, Geodatabases on Amazon Web Services, Esri Online documentation

Multi-AZ and Read Replicas are used for high availability, fault tolerance and performance scaling. Like the Esri online documentation states, multi-AZ deployments are more expensive. That said, the Total Cost of Ownership (TCO) is much lower than implementing the same architecture on-premise not too mention, less painful.

In addition, with multi-AZ, Reserved (vs On-Demand) instance payment plans are available to reduce costs. Reserved instances are based on DB engine, DB instance class, license model, and region. They can be moved between Availability Zones (AZ) in the same region. They can be applied to Read Replicas if DB instance class and region are the same.

Lastly, keep in mind DynamoDB. With regard to HA, it has better HA over RDS because of inherent fault tolerance. Although not compatible with ArcGIS Geodatabase, consider DynamoDB as a non-spatial data store. DynamoDB is a key-value and document database that delivers single-digit millisecond performance at any scale.

Amazon RDS Read Replicas and ArcGIS

Amazon RDS Read Replicas provide enhanced performance and durability for RDS database (DB) instances. They make it easy to elastically scale out beyond the capacity constraints of a single DB instance for read-heavy database workloads. You can create one or more replicas of a given source DB Instance and serve high-volume application read traffic from multiple copies of your data, thereby increasing aggregate read throughput. Read replicas can also be promoted when needed to become standalone DB instances.

ArcGIS Geodatabase compatible Read Replicas are available in Amazon RDS for PostgreSQL, SQL Server, and Amazon Aurora.

Amazon Aurora Serverless Geodatabase

Amazon Aurora Serverless is an on-demand, autoscaling configuration for Amazon Aurora. It is an alternative to RDS and may give greater benefits with regard to cost savings and simplicity. Aurora Serverless removes much of the complexity of managing DB instances and capacity. Yet, Aurora Serverless seamlessly scales and uses the same fault-tolerant, distributed storage system with six-way replication as Aurora (RDS) to protect against data loss.

You may consider Aurora Serverless for your geodatabase implementation in several cases such as infrequently used or new apps, variable or unpredictable workloads, dev and test environments, or multi-tenant apps. With Aurora Serverless, you pay for only the database resources that you consume on a per-second basis.

Geodatabase Migration to AWS

AWS Database Migration Service helps you migrate database to AWS quickly and securely. Use along with the Schema Conversion Tool (SCT) to migrate databases to AWS RDS or EC2-based databases.

Esri has the following help on strategies for loading data into a geodatabase and data transfer.

AWS RDS Related Services

Amazon Relational Database Service (Amazon RDS) is a web service that makes it easier to set up, operate, and scale a relational database in the AWS Cloud. It provides cost-efficient, resizable capacity for an industry-standard relational database and manages common database administration tasks.

AWS Database Migration Service helps you migrate databases to AWS quickly and securely.

Amazon Aurora is a MySQL and PostgreSQL-compatible relational database built for the cloud, that combines the performance and availability of traditional enterprise databases with the simplicity and cost-effectiveness of open source databases.

ArcGIS Pro App Streaming

Amazon AppStream 2.0 is a fully managed application streaming service. You centrally manage your desktop applications on AppStream 2.0 and securely deliver them to any computer. You can easily scale to any number of users across the globe without acquiring, provisioning, and operating hardware or infrastructure.

Esri published a blog showing how to use Amazon AppStream 2.0 to deliver ArcGIS Pro. To get started using ArcGIS Pro with Amazon AppStream 2.0, please review the Amazon AppStream 2.0: Esri ArcGIS Pro Deployment Guide.

Amazon WorkSpaces is a managed, secure Desktop-as-a-Service (DaaS) solution. You can use Amazon WorkSpaces to provision Windows desktops in just a few minutes and quickly scale to provide thousands of desktops to workers across the globe. This is a viable option for streaming ArcGIS Pro to your organization.

The WorkSpaces Graphics Bundle instance offers an NVIDIA GPU to deliver the necessary GPU support needed by ArcGIS Pro to provide a rich user experience. The GPU used in the WorkSpaces Graphics Bundle instance is passed through to the instance, it is not shared. This provides the capability to successfully support graphics rendering in ArcGIS Pro.

For additional information related to the options and features offered by Amazon, see the following resources:


ArcGIS Server Security 2018 Update 1 Patch

This security patch addresses a cross-site scripting vulnerability found in ArcGIS Server. Esri recommends that all customers using ArcGIS Server 10.5.1, 10.4.1, and 10.3.1 apply this patch.

Esri® announces the ArcGIS Server Security 2018 Update 1 Patch. Esri recommends that all customers using ArcGIS Server 10.5.1, 10.4.1, and 10.3.1 apply this patch. It deals specifically with the issue listed below under Issues Addressed with this patch.

Note: This security patch is cumulative and includes several security and non-security related fixes from earlier patches that are also listed below under Issues Addressed with this Patch.

Important note August 16, 2018: The 10.5.1 version of this patch was updated to fix a regression that impacted the ability to visualize data from the spatiotemporal big data store. Users are encouraged to download and install the updated patch to correct this problem. None of the security fixes included in the original version of the patch were impacted.

Issues Addressed with this patch

  • BUG-000104739 - ArcGIS Server system tools are susceptible to cross-site scripting (XSS) attacks.
  • BUG-000115738 - After applying ArcGIS Server 10.5.1 Security 2018 Update 1 Patch, spatiotemporal point data from the ArcGIS Data Store cannot be displayed. (ArcGIS Server 10.5.1 Version only)
  • BUG-000113291 - There is an improper access control issue in ArcGIS Server.
  • BUG-000112254 - Donut polygons are represented with polygons instead of 'holes' in Web Feature Service (WFS) services in ArcGIS Server 10.5.1.
  • BUG-000112146 - WFS GetFeature request with a BBOX Filter and two layers does not work.
  • BUG-000112081 - Multi-column unique value renderer fails to start if the first column is a long int.
  • BUG-000112080 - Account for replica in data sender state when syncing with versioned data.
  • BUG-000112079 - Make the replicaServerGen parameter required in sycnhronizeReplica for syncModel perReplica.
  • BUG-000112077 - Should not filter uploaded or server generated input delta file at the end of a versioned sync.
  • BUG-000112075 - Add diff cursor logging and code to account for data inconsistencies during sync download.
  • BUG-000112060 - The feature service createReplica operation ignores the datum transformation set on the feature service in 10.5.1.
  • BUG-000111446 - WFS-T services can only be altered with a transaction with POST using WFS 2.0.0 syntax, even when forcing the version in the request to 1.1.0.
  • BUG-000110938 - EsriFieldTypeSingle behaves as an INT in WFS service published to ArcGIS Server 10.5.1.
  • BUG-000110480 - Updates to server directory locations are sometimes not be applied to all services.
  • BUG-000110388 - The ObjectID and GlobalID fields are not exposed in Web Feature Service (WFS) services in ArcGIS server 10.5.x.
  • BUG-000111075 - A feature service consumed in a GeoEvent Service fails to re-establish communication with the database once the database connection comes back after a communication failure.
  • BUG-000109803 - Unable to delete polygon and polyline features in a Spatiotemporal Big Data Store feature service created in ArcGIS GeoEvent Server.
  • BUG-000109738 - A Web Feature Service (WFS) displays a zero instead of a null value for the field attributes when queried through a browser.
  • BUG-000109686 - Disabling SSL in RabbitMQ causes instability issues for GeoEvent Server.
  • BUG-000109619 - WFS fails to yield data using DescribeFeatureType when accented characters (i.e. Á) are used in layer Names.
  • BUG-000109577 - Add support for NOT LIKE on queries with spatiotemporal based hosted feature services.
  • BUG-000109576 - Add support for upper and lower SQL functions on query with spatiotemporal based hosted feature services.
  • BUG-000109544 - ArcGIS GIS Server 10.5.1 Standard Overlay Layers analysis Tool fails with input line features that are results from the Join Features task of GeoAnalytics Tools of ArcGIS GeoAnalytics Server 10.5.1.
  • BUG-000109441 - The GetFeature service shows "Shape xsi:nil="true"" for a Web Feature Service (WFS) when the service has fields in the properties tab under "Table of Content" as invisible.
  • BUG-000108709 - Using the operator in the first layer of a query in a WFS:getFeature request causes an exception in the response.
  • BUG-000108365 - An XML POST request of a Web Feature Service (WFS) service is not accepted if PropertyName is used.
  • BUG-000108257 - The ArcGIS Enterprise Disaster Recovery and Replication workflow replaces the certificates in the standby environment with the certificates from the primary environment, which causes ArcGIS GeoEvent Server to fail to start.
  • BUG-000107477 - The GeoAnalytics Join Features tool fails on polygon to polygon joins with certain polygons.
  • BUG-000106367 - Failure to correctly use Oracle based feature services.
  • BUG-000106348 - Map and feature service published from the same geometric network returns different geometry when the query includes a transformation to a different coordinate system.
  • BUG-000106301 - Accessing secured map services through web-tier authentication with the ASP.NET identity store causes extended delays in response time on a regular basis.
  • BUG-000105936 - Set specific ports to use all machines for analysis in a GeoAnalytics Server behind a windows firewall.
  • BUG-000104306 - When viewing data published from a federated ArcGIS Server in a Portal for ArcGIS 10.5 web map, the federated ArcGIS Server logs report the following severe-level messages even though the data is viewable and editable on the map: "Failed to return the service configuration 'Service_name.MapServer'. Server machine 'https://MACHINE_NAME.DOMAIN.COM:7443/arcgis/sharing/rest/content/items/ ' returned an error. 'Internal Server Error'"
  • BUG-000103341 - PrintingTools services do not display shapefiles during printing or when creating Portal thumbnails when Z-values are included.
  • BUG-000102408 - WFS-T Inserts indicate success yet there's no point added.
  • BUG-000102081 - A Web Feature Service (WFS) provided by ArcGIS GIS Server requires a flag to toggle between using field names rather than field aliases. Otherwise, the WFS To Geodatabase tool fails to complete correctly if field aliases are used.
  • BUG-000099496 - In ArcGIS Server Manager, map services hang at the 'Starting' state when there are many requests generated while the service is starting.
  • NIM100766 - The date filter does not work with the Web Feature Service (WFS) GetFeature capability.
  • BUG-000113291 - There is an improper access control issue in ArcGIS Server.
  • BUG-000111987 - The hotfix, QFE-1041-S-363090, results in the Operations Dashboard bar chart widget displaying "no data" when viewed in the IE browser (version 11).
  • BUG-000110882 - Uploading SOE to Server causes Spatiotemporal Big Data Store hosted map service created in ArcGIS GeoEvent Server inaccessible.
  • BUG-000107200 - Executing the find operation on a spatiotemporal big data store map service at REST intermittently returns the error, "none.get".
  • BUG-000105602 - Query for date fields fail with an error, "Database error has occurred" for a Spatiotemporal Big Data Store feature service.
  • BUG-000105458 - ArcGIS Server does not honor the 'domainControllerAddress' setting in the security configuration.
  • BUG-000102477 - When implementing a Server Object Interceptor (SOI) for a feature service, ServerUtilities.getServerUserInfo() returns empty values, but works as expected for a map service.
  • BUG-000099629 - Unable to upload files in ArcGIS Server Manager after updating the browser to Firefox 49 or Chrome 54.
  • BUG-000099496 - In ArcGIS Server Manager 10.4.1, map services hang at the 'Starting' state when there are many requests generated while the service is starting.
  • BUG-000099099 - Updating the sharing option of a map service of a federated ArcGIS for Server to 'Everyone' from the ArcGIS Server Manager adds two map image layers to Portal for ArcGIS > My Content as items, if the map image layer has been moved to a subfolder in the Portal for ArcGIS My Content page.
  • BUG-000099098 - When a map image layer is moved to another folder in My Content on a federated portal, the sharing properties of the ArcGIS Server service is changed from Everyone to Private in ArcGIS Server Manager.
  • BUG-000098119 - ArcGIS Server exposes internal information.
  • BUG-000095194 - Feature service REST response periodically does not return full editing capabilities.
  • BUG-000094193 - When a server object interceptor (SOI) is enabled on an ArcGIS for Server feature service with the Sync capability, the Create Replica operation fails, which renders the feature service unusable for offline editing.
  • BUG-000093500 - After login, user is redirected to the Services Directory home page instead of URL from which login was attempted.
  • NIM089714 - When running two Server Object Extensions (SOEs) on the same server with the same property name, the value of the second SOE property is ignored.
  • BUG-000113291 - There is an improper access control issue in ArcGIS Server.
  • BUG-000103341 - PrintingTools service does not display shape files during printing or when creating Portal thumbnails when Z-values are included.
  • BUG-000100330 - Enhance ArcGIS Server Manager security against clickjacking attempts.
  • BUG-000099629 - Unable to upload files in ArcGIS Server Manager after updating the browser to Firefox 49 or Chrome 54.
  • BUG-000098489 - The MapServer export operation ignores definition queries when they are malformed. The operation must throw an error instead.
  • BUG-000098312 - Printing service fails to print AGOL/Portal item that secured with limited access and credentials are embedded within that.
  • BUG-000098119 - ArcGIS Server exposes internal information.
  • BUG-000095713 - Restrict GP service and extension publishing to administrators only.
  • BUG-000095712 - Restrict RMID ActivationSystem to ArcSOC only.
  • BUG-000095244 - Unjoin Join workflow loses line points.
  • BUG-000095194 - Feature service REST response periodically does not return full editing capabilities.
  • BUG-000095044 - SQL injection vulnerability that allows unauthorized modification of data.
  • BUG-000094671 - EstimateCacheTileSize/ ExportTiles jobs sporadically returns a blank page, which needs to refreshed several times to get jobstatus. Severe error messages are generated when user clicks on refresh.
  • BUG-000094606 - ArcGIS Server Manager does not open if the fully qualified machine name ends in '.proxy'.
  • BUG-000094489 - Overwriting a hosted feature service in Portal for ArcGIS fails if using a feature class that is part of a feature dataset that also contains a geometric network.
  • BUG-000094082 - Window extents cause join links created by the trace-link tool to create line point links instead of parcel point links.
  • BUG-000094193 - When a server object interceptor (SOI) is enabled on an ArcGIS for Server feature service with the Sync capability, the Create Replica operation fails, which renders the feature service unusable for offline editing.
  • BUG-000093884 - SOAP responses from map services do not comply with map server WSDL definition.
  • BUG-000093879 - Merge parcels changes original COGO dimensions when flex points are present.
  • BUG-000093500 - After login, user is redirected to the Services Directory home page instead of URL from which login was attempted.
  • BUG-000092906 - Map and Image services are vulnerable to a XML external entity injection (XXE).
  • BUG-000092447 - Tomcat vulnerability CVE-2014-0099 - Integer overflow attack.
  • BUG-000092445 - Tomcat vulnerability CVE-2014-0230 - Denial-of-service attack via thread consumption.
  • BUG-000091959 - Some COGO properties of arcs are not being updated after using the Remainder tool.
  • BUG-000091775 - Forcing closure when creating a New Parcel recomputes the start point of the beginning course.
  • BUG-000091182 - Create parallel offset changes bearing values.
  • BUG-000091147 - When Collector for Android 10.3.3 is working with a feature service, which has a non-nullable field with a coded attribute domain, if a value is not provided by the user, the application sends a space as an edit. This causes invalid data against the goals of the user's schema, and the application passing a space bypasses the goals of the end user to force a true value for this field.
  • BUG-000091033 - In ArcGIS Runtime Java GPK, certain functions, when packaging geoprocessing tools, which are critical to client operations, are not available.
  • BUG-000090882 - Creating a new parcel on Win 8.1 OS and 10 OS causes ArcMap to crash when using the second join option or forcing closure.
  • BUG-000090845 - Restrict access to the Tomcat internal shutdown port.
  • BUG-000090534 - Packaging rasters in a catalog with an extent set does not properly clip.
  • BUG-000090429 - Reflected XSS vulnerability with generateToken requests occurs sporadically.
  • BUG-000090045 - Optimize field checking on to improve performance of sync import and export.
  • BUG-000090171 - PDF file attachments above a certain size in a feature service fail to display correctly in a browser.
  • BUG-000089636 - Parcel misclose ratio is not getting set properly on a perfect square parcel.
  • BUG-000089622 - Parcels that contain line strings with curves move out of place when adjacent parcels are unjoined.
  • BUG-000088948 - The Arc Length and Distance values are not updating correctly.
  • BUG-000088847 - Tiles from WMTS Services for some coordinate systems (or CRS) do not align in ArcGIS Desktop and when served from ArcGIS Server.
  • BUG-000088825 - Parcel remainder tool creates gaps and over laps between parcels.
  • BUG-000088454 - If a folder path contains letter 'u' after '' ArcGIS for Server search service fails to register the folder with an error For Input String: "sage".
  • BUG-000088191 - The Parcel Fabric Name Parcel tool create gaps on parcels that have a flexed line point.
  • BUG-000088180- Line points are maintaining the original To, From and LinePoint ID values when using the Append GP tool.
  • BUG-000088145 - Survey dates on control points are being changed to null when creating a connection line in Parcel fabric.
  • BUG-000087817 - Bypass relationship processing if it is all records and optimize row copy on create replica.
  • BUG-000087751 - An 'out of memory' error occurs while running the Append Parcel Fabric geoprocessing tool on large parcel fabrics.
  • BUG-000087677 - Doing specific parcel fabric workflows through the Parcel explorer window causes control points to move to a different xy location when joined.
  • BUG-000087361- Using the Parcel Fabric Add Line Point tool deletes existing line points in the same area.
  • BUG-000086992 - The parcel fabric least squares adjustment report gives incorrect values for range and standard deviation.
  • BUG-000086939 - Line points should not be created on curves when using Parallel Offset.
  • BUG-000086412 - Queries against feature services layers that contain a many columns takes longer than queries against the same layers map service endpoint.
  • BUG-000086010 - Constructing a parcel on a parent that contains coincident line strings and has been adjusted creates gaps when built.
  • BUG-000085852 - Center points that have been merged are not honored once a parcel is opened and edits are kept.
  • BUG-000085354 - LinePoints not behaving correctly when working with different joining methods within a parcel fabric.
  • BUG-000083610 - Printing an external secure service with limit usage referrers fails in an ArcGIS Online web application.
  • BUG-000082640 - When choosing a different location for installation of ArcGIS for Server 10.3 other than the default for the arcgisserver folder, the installation still creates the folder under c:arcgisserver folder and a new location specified. Also, when the arcgisserver that was initially created is removed, the system automatically creates a new arcgisserver folder with a directories subfolder that is empty.
  • BUG-000082267 - Improve tab order, button labels, refresh behaviour, and navigation of ArcGIS for Server Manager.

Installing this patch on Windows

Installation Steps:

ArcGIS Server must be installed before installing this patch.

    Download the appropriate file to a location other than your ArcGIS installation location.

ArcGIS 10.5.1 Checksum (Md5)
ArcGIS Server ArcGIS-1051-S-SEC2018U1-PatchB.msp 547B062C5EC97DEEF772EB5029AEFC79
ArcGIS 10.4.1 Checksum (Md5)
ArcGIS Server ArcGIS-1041-S-SEC2018U1-Patch.msp 6E4908AA95192AB5BDAEF7114043CA82
ArcGIS 10.3.1 Checksum (Md5)
ArcGIS Server ArcGIS-1031-S-SEC2018U1-Patch.msp 978C1577AFA12B6CA5908E3B11B92446

NOTE: If double clicking on the MSP file does not start the setup installation, you can start the setup installation manually by using the following command:

Installing this patch on Linux

Installation Steps:

Complete the following install steps as the ArcGIS Install owner. The Install owner is the owner of the arcgis folder.

ArcGIS Server must be installed before installing this patch.

    Download the appropriate file to a location other than your ArcGIS installation location.

ArcGIS 10.5.1 Checksum (Md5)
ArcGIS Server ArcGIS-1051-S-SEC2018U1-PatchB-linux.tar 8758D9E589EDF025747E9885CC233953
ArcGIS 10.4.1 Checksum (Md5)
ArcGIS Server ArcGIS-1041-S-SEC2018U1-Patch-linux.tar 0B180A6A0EAD1BEE645744F24873A7B6
ArcGIS 10.3.1 Checksum (Md5)
ArcGIS Server ArcGIS-1031-S-SEC2018U1-Patch-linux.tar 6121519562CEB00063343E7C207476D5

Uninstalling this patch on Windows

    To uninstall this patch on Windows, open the Windows Control Panel and navigate to installed programs. Make sure that "View installed updates" (upper left side of the Programs and Features dialog) is active. Select the patch name from the programs list and click Uninstall to remove the patch.

Uninstalling this patch on Linux

    Uninstalling this patch is only available on version 10.5.1. To remove this patch, navigate to the /tmp directory and run the following script as the ArcGIS Install owner:

Patch Updates

Check the Patches and Service Packs page periodically for the availability of additional patches. New information about this patch will be posted here.

July 20, 2018: The 10.3.1 version of the ArcGIS Server Security 2018 Update 1 Patch is now available for download.

August 1, 2018: A regression has been identified for 10.5.1 users with spatiotemporal point data, which impacts the ability to view the data. This does not impact the storage or availability of the spatiotemporal data. We are actively working to resolve this and will release an updated patch once it is available. This regression does not impact any of the security fixes included in the patch.

August 16, 2018: The 10.5.1 version of this patch was updated to fix a regression that impacted the ability to visualize data from the spatiotemporal big data store. Users are encouraged to download and install the updated patch to correct this problem. None of the security fixes included in the original version of the patch were impacted.

How to identify which ArcGIS products are installed

To determine which ArcGIS products are installed, choose the appropriate version of the PatchFinder utility for your environment and run it from your local machine. PatchFinder will list all products, hot fixes, and patches installed on your local machine.

Getting Help

Domestic sites, please contact Esri Technical Support at 1-888-377-4575, if you have any difficulty installing this patch. International sites, please contact your local Esri software distributor.


ArcGIS Server Security 2018 Update 2 Patch

This security patch addresses multiple security vulnerabilities found in ArcGIS Server. Esri recommends that all customers using ArcGIS Server 10.6.1, 10.5.1, 10.4.1, and 10.3.1 apply this patch.

Esri® announces the ArcGIS Server Security 2018 Update 2 Patch. Esri recommends that all customers using ArcGIS Server 10.6.1, 10.5.1, 10.4.1, and 10.3.1 apply this patch. It deals specifically with the issue listed below under Issues Addressed with this patch.

Note: This security patch is cumulative and includes several security and non-security related fixes from earlier patches that are also listed below under Issues Addressed with this Patch.

Issues Addressed with this patch

  • BUG-000117372 - Cross-site scripting (XSS) in Server Admin api.
  • ENH-000117371 - Add an option to enforce encrypted communication between ArcGIS Server and Active Directory. (10.5.1, 10.4.1, 10.3.1 Only)
  • BUG-000115799 - Vector Tile Layers hosted in ArcGIS Enterprise 10.6.1 do not overzoom successfully when viewed in the Map Viewer.
  • BUG-000117350 - Recycling sco process takes longer than checkConnectionInterval time in case of stale database connections.
  • BUG-000115738 - After applying ArcGIS Server 10.5.1 Security 2018 Update 1 Patch, spatiotemporal point data from the ArcGIS Data Store cannot be displayed.
  • BUG-000115772 - When utilizing the GetFeature URL query on a Web Map Service (WFS) containing more than 300,000 features, the query fails after trying to run indefinitely.
  • BUG-000113853 - Web Feature Service (WFS) filter "within" does not return any objects when used.
  • BUG-000113847 - SynchronizeReplica output delta to JSON: inserted attachment fails to export.
  • BUG-000113846 - Sync: JSON synchronizeReplica response lists serverGen twice.
  • BUG-000113845 - CreateReplica to JSON format returnAttachmentsDataByUrl=true does not return attachments by URL.
  • BUG-000113291 - There is an improper access control issue in ArcGIS Server.
  • BUG-000112254 - Donut polygons are represented with polygons instead of 'holes' in Web Feature Service (WFS) services in ArcGIS Server 10.5.1.
  • BUG-000112146 - WFS GetFeature request with a BBOX Filter and two layers does not work.
  • BUG-000112081 - Multi-column unique value renderer fails to start if the first column is a long int.
  • BUG-000112080 - Account for replica in data sender state when syncing with versioned data.
  • BUG-000112079 - Make the replicaServerGen parameter required in sycnhronizeReplica for syncModel perReplica.
  • BUG-000112077 - Should not filter uploaded or server generated input delta file at the end of a versioned sync.
  • BUG-000112075 - Add diff cursor logging and code to account for data inconsistencies during sync download.
  • BUG-000112060 - The feature service createReplica operation ignores the datum transformation set on the feature service in 10.5.1.
  • BUG-000111738 - An invalid geometry is not detected when using ST_GEOMETRY (or any other ST Function) to create a polygon from a well-known text (WKT) that contains some invalid and valid polygons. ST_ASTEXT returns "EMPTY" upon this polygon as well.
  • BUG-000111446 - WFS-T services can only be altered with a transaction with POST using WFS 2.0.0 syntax, even when forcing the version in the request to 1.1.0.
  • BUG-000110938 - EsriFieldTypeSingle behaves as an INT in WFS service published to ArcGIS Server 10.5.1.
  • BUG-000110801 - Syncing with dataFormat = json returns the error "Failed to serialize delta gdb to JSON."
  • BUG-000110480 - Updates to server directory locations are sometimes not be applied to all services.
  • BUG-000110388 - The ObjectID and GlobalID fields are not exposed in Web Feature Service (WFS) services in ArcGIS server 10.5.x.
  • BUG-000111075 - A feature service consumed in a GeoEvent Service fails to re-establish communication with the database once the database connection comes back after a communication failure.
  • BUG-000109803 - Unable to delete polygon and polyline features in a Spatiotemporal Big Data Store feature service created in ArcGIS GeoEvent Server.
  • BUG-000109738 - A Web Feature Service (WFS) displays a zero instead of a null value for the field attributes when queried through a browser.
  • BUG-000109686 - Disabling SSL in RabbitMQ causes instability issues for GeoEvent Server.
  • BUG-000109619 - WFS fails to yield data using DescribeFeatureType when accented characters (i.e. Á) are used in layer Names.
  • BUG-000109577 - Add support for NOT LIKE on queries with spatiotemporal based hosted feature services.
  • BUG-000109576 - Add support for upper and lower SQL functions on query with spatiotemporal based hosted feature services.
  • BUG-000109544 - ArcGIS GIS Server 10.5.1 Standard Overlay Layers analysis Tool fails with input line features that are results from the Join Features task of GeoAnalytics Tools of ArcGIS GeoAnalytics Server 10.5.1.
  • BUG-000109441 - The GetFeature service shows "Shape xsi:nil="true"" for a Web Feature Service (WFS) when the service has fields in the properties tab under "Table of Content" as invisible.
  • BUG-000108709 - Using the operator in the first layer of a query in a WFS:getFeature request causes an exception in the response.
  • BUG-000108365 - An XML POST request of a Web Feature Service (WFS) service is not accepted if PropertyName is used.
  • BUG-000108257 - The ArcGIS Enterprise Disaster Recovery and Replication workflow replaces the certificates in the standby environment with the certificates from the primary environment, which causes ArcGIS GeoEvent Server to fail to start.
  • BUG-000107477 - The GeoAnalytics Join Features tool fails on polygon to polygon joins with certain polygons.
  • BUG-000106500 - A feature class with hidden fields published to ArcGIS Server 10.5 as a Web Feature Service (WFS) shows incorrect values for the fields in the attribute table when added to ArcMap with a WFS server connection.
  • BUG-000106367 - Failure to correctly use Oracle based feature services.
  • BUG-000106348 - Map and feature service published from the same geometric network returns different geometry when the query includes a transformation to a different coordinate system.
  • BUG-000106301 - Accessing secured map services through web-tier authentication with the ASP.NET identity store causes extended delays in response time on a regular basis.
  • BUG-000105936 - Set specific ports to use all machines for analysis in a GeoAnalytics Server behind a windows firewall.
  • BUG-000104739 - ArcGIS Server system tools are susceptible to cross-site scripting (XSS) attacks.
  • BUG-000104306 - When viewing data published from a federated ArcGIS Server in a Portal for ArcGIS 10.5 web map, the federated ArcGIS Server logs report the following severe-level messages even though the data is viewable and editable on the map: "Failed to return the service configuration 'Service_name.MapServer'. Server machine 'https://MACHINE_NAME.DOMAIN.COM:7443/arcgis/sharing/rest/content/items/ ' returned an error. 'Internal Server Error'"
  • BUG-000103341 - PrintingTools services do not display shapefiles during printing or when creating Portal thumbnails when Z-values are included.
  • BUG-000102408 - WFS-T Inserts indicate success yet there's no point added.
  • BUG-000102081 - A Web Feature Service (WFS) provided by ArcGIS GIS Server requires a flag to toggle between using field names rather than field aliases. Otherwise, the WFS To Geodatabase tool fails to complete correctly if field aliases are used.
  • BUG-000099496 - In ArcGIS Server Manager, map services hang at the 'Starting' state when there are many requests generated while the service is starting.
  • NIM100766 - The date filter does not work with the Web Feature Service (WFS) GetFeature capability.
  • BUG-000113291 - There is an improper access control issue in ArcGIS Server.
  • BUG-000111987 - The hotfix, QFE-1041-S-363090, results in the Operations Dashboard bar chart widget displaying "no data" when viewed in the IE browser (version 11).
  • BUG-000110882 - Uploading SOE to Server causes Spatiotemporal Big Data Store hosted map service created in ArcGIS GeoEvent Server inaccessible.
  • BUG-000107200 - Executing the find operation on a spatiotemporal big data store map service at REST intermittently returns the error, "none.get".
  • BUG-000105602 - Query for date fields fail with an error, "Database error has occurred" for a Spatiotemporal Big Data Store feature service.
  • BUG-000105458 - ArcGIS Server does not honor the 'domainControllerAddress' setting in the security configuration.
  • BUG-000104739 - ArcGIS Server system tools are susceptible to cross-site scripting (XSS) attacks.
  • BUG-000102477 - When implementing a Server Object Interceptor (SOI) for a feature service, ServerUtilities.getServerUserInfo() returns empty values, but works as expected for a map service.
  • BUG-000099629 - Unable to upload files in ArcGIS Server Manager after updating the browser to Firefox 49 or Chrome 54.
  • BUG-000099496 - In ArcGIS Server Manager 10.4.1, map services hang at the 'Starting' state when there are many requests generated while the service is starting.
  • BUG-000099099 - Updating the sharing option of a map service of a federated ArcGIS for Server to 'Everyone' from the ArcGIS Server Manager adds two map image layers to Portal for ArcGIS > My Content as items, if the map image layer has been moved to a subfolder in the Portal for ArcGIS My Content page.
  • BUG-000099098 - When a map image layer is moved to another folder in My Content on a federated portal, the sharing properties of the ArcGIS Server service is changed from Everyone to Private in ArcGIS Server Manager.
  • BUG-000098119 - ArcGIS Server exposes internal information.
  • BUG-000095194 - Feature service REST response periodically does not return full editing capabilities.
  • BUG-000094193 - When a server object interceptor (SOI) is enabled on an ArcGIS for Server feature service with the Sync capability, the Create Replica operation fails, which renders the feature service unusable for offline editing.
  • BUG-000093500 - After login, user is redirected to the Services Directory home page instead of URL from which login was attempted.
  • NIM089714 - When running two Server Object Extensions (SOEs) on the same server with the same property name, the value of the second SOE property is ignored.
  • BUG-000111578 - The third tier of a nested relationship does not come through in the downloaded replica of an ArcGIS Server feature service when there are multiple relates at the second and third level.
  • BUG-000113291 - There is an improper access control issue in ArcGIS Server.
  • BUG-000104739 - ArcGIS Server system tools are susceptible to cross-site scripting (XSS) attacks.
  • BUG-000103341 - PrintingTools service does not display shape files during printing or when creating Portal thumbnails when Z-values are included.
  • BUG-000100330 - Enhance ArcGIS Server Manager security against clickjacking attempts.
  • BUG-000099629 - Unable to upload files in ArcGIS Server Manager after updating the browser to Firefox 49 or Chrome 54.
  • BUG-000098489 - The MapServer export operation ignores definition queries when they are malformed. The operation must throw an error instead.
  • BUG-000098312 - Printing service fails to print AGOL/Portal item that secured with limited access and credentials are embedded within that.
  • BUG-000098119 - ArcGIS Server exposes internal information.
  • BUG-000095713 - Restrict GP service and extension publishing to administrators only.
  • BUG-000095712 - Restrict RMID ActivationSystem to ArcSOC only.
  • BUG-000095244 - Unjoin Join workflow loses line points.
  • BUG-000095194 - Feature service REST response periodically does not return full editing capabilities.
  • BUG-000095044 - SQL injection vulnerability that allows unauthorized modification of data.
  • BUG-000094671 - EstimateCacheTileSize/ ExportTiles jobs sporadically returns a blank page, which needs to refreshed several times to get jobstatus. Severe error messages are generated when user clicks on refresh.
  • BUG-000094606 - ArcGIS Server Manager does not open if the fully qualified machine name ends in '.proxy'.
  • BUG-000094489 - Overwriting a hosted feature service in Portal for ArcGIS fails if using a feature class that is part of a feature dataset that also contains a geometric network.
  • BUG-000094082 - Window extents cause join links created by the trace-link tool to create line point links instead of parcel point links.
  • BUG-000094193 - When a server object interceptor (SOI) is enabled on an ArcGIS for Server feature service with the Sync capability, the Create Replica operation fails, which renders the feature service unusable for offline editing.
  • BUG-000093884 - SOAP responses from map services do not comply with map server WSDL definition.
  • BUG-000093879 - Merge parcels changes original COGO dimensions when flex points are present.
  • BUG-000093500 - After login, user is redirected to the Services Directory home page instead of URL from which login was attempted.
  • BUG-000092906 - Map and Image services are vulnerable to a XML external entity injection (XXE).
  • BUG-000092447 - Tomcat vulnerability CVE-2014-0099 - Integer overflow attack.
  • BUG-000092445 - Tomcat vulnerability CVE-2014-0230 - Denial-of-service attack via thread consumption.
  • BUG-000091959 - Some COGO properties of arcs are not being updated after using the Remainder tool.
  • BUG-000091775 - Forcing closure when creating a New Parcel recomputes the start point of the beginning course.
  • BUG-000091182 - Create parallel offset changes bearing values.
  • BUG-000091147 - When Collector for Android 10.3.3 is working with a feature service, which has a non-nullable field with a coded attribute domain, if a value is not provided by the user, the application sends a space as an edit. This causes invalid data against the goals of the user's schema, and the application passing a space bypasses the goals of the end user to force a true value for this field.
  • BUG-000091033 - In ArcGIS Runtime Java GPK, certain functions, when packaging geoprocessing tools, which are critical to client operations, are not available.
  • BUG-000090882 - Creating a new parcel on Win 8.1 OS and 10 OS causes ArcMap to crash when using the second join option or forcing closure.
  • BUG-000090845 - Restrict access to the Tomcat internal shutdown port.
  • BUG-000090534 - Packaging rasters in a catalog with an extent set does not properly clip.
  • BUG-000090429 - Reflected XSS vulnerability with generateToken requests occurs sporadically.
  • BUG-000090045 - Optimize field checking on to improve performance of sync import and export.
  • BUG-000090171 - PDF file attachments above a certain size in a feature service fail to display correctly in a browser.
  • BUG-000089636 - Parcel misclose ratio is not getting set properly on a perfect square parcel.
  • BUG-000089622 - Parcels that contain line strings with curves move out of place when adjacent parcels are unjoined.
  • BUG-000088948 - The Arc Length and Distance values are not updating correctly.
  • BUG-000088847 - Tiles from WMTS Services for some coordinate systems (or CRS) do not align in ArcGIS Desktop and when served from ArcGIS Server.
  • BUG-000088825 - Parcel remainder tool creates gaps and over laps between parcels.
  • BUG-000088454 - If a folder path contains letter 'u' after '' ArcGIS for Server search service fails to register the folder with an error For Input String: "sage".
  • BUG-000088191 - The Parcel Fabric Name Parcel tool create gaps on parcels that have a flexed line point.
  • BUG-000088180- Line points are maintaining the original To, From and LinePoint ID values when using the Append GP tool.
  • BUG-000088145 - Survey dates on control points are being changed to null when creating a connection line in Parcel fabric.
  • BUG-000087817 - Bypass relationship processing if it is all records and optimize row copy on create replica.
  • BUG-000087751 - An 'out of memory' error occurs while running the Append Parcel Fabric geoprocessing tool on large parcel fabrics.
  • BUG-000087677 - Doing specific parcel fabric workflows through the Parcel explorer window causes control points to move to a different xy location when joined.
  • BUG-000087361- Using the Parcel Fabric Add Line Point tool deletes existing line points in the same area.
  • BUG-000086992 - The parcel fabric least squares adjustment report gives incorrect values for range and standard deviation.
  • BUG-000086939 - Line points should not be created on curves when using Parallel Offset.
  • BUG-000086412 - Queries against feature services layers that contain a many columns takes longer than queries against the same layers map service endpoint.
  • BUG-000086010 - Constructing a parcel on a parent that contains coincident line strings and has been adjusted creates gaps when built.
  • BUG-000085852 - Center points that have been merged are not honored once a parcel is opened and edits are kept.
  • BUG-000085354 - LinePoints not behaving correctly when working with different joining methods within a parcel fabric.
  • BUG-000083610 - Printing an external secure service with limit usage referrers fails in an ArcGIS Online web application.
  • BUG-000082640 - When choosing a different location for installation of ArcGIS for Server 10.3 other than the default for the arcgisserver folder, the installation still creates the folder under c:arcgisserver folder and a new location specified. Also, when the arcgisserver that was initially created is removed, the system automatically creates a new arcgisserver folder with a directories subfolder that is empty.
  • BUG-000082267 - Improve tab order, button labels, refresh behaviour, and navigation of ArcGIS for Server Manager.

Installing this patch on Windows

Installation Steps:

ArcGIS Server must be installed before installing this patch.

    Download the appropriate file to a location other than your ArcGIS installation location.

ArcGIS Server 10.6.1 Checksum (Md5)
ArcGIS Server ArcGIS-1061-S-SEC2018U2-Patch.msp ECB4B7F0B031D3280F64091CB79E3A5C
ArcGIS Server 10.5.1 Checksum (Md5)
ArcGIS Server ArcGIS-1051-S-SEC2018U2-Patch.msp 43E3D7EEB92B35F469A3F813F6A50BE0
ArcGIS Server 10.4.1 Checksum (Md5)
ArcGIS Server ArcGIS-1041-S-SEC2018U2-Patch.msp A0FE71686023FC93D94ADD982F63D687
ArcGIS Server 10.3.1 Checksum (Md5)
ArcGIS Server ArcGIS-1031-S-SEC2018U2-Patch.msp CEC5E4595A2A6DF505533A80A1D525C6

NOTE: If double clicking on the MSP file does not start the setup installation, you can start the setup installation manually by using the following command:

Installing this patch on Linux

Installation Steps:

Complete the following install steps as the ArcGIS Install owner. The Install owner is the owner of the arcgis folder.

ArcGIS Server must be installed before installing this patch.

    Download the appropriate file to a location other than your ArcGIS installation location.

ArcGIS Server 10.6.1 Checksum (Md5)
ArcGIS Server ArcGIS-1061-S-SEC2018U2-Patch-linux.tar 20B53324A824E3F8D16F4ED21E43DD8A
ArcGIS Server 10.5.1 Checksum (Md5)
ArcGIS Server ArcGIS-1051-S-SEC2018U2-Patch-linux.tar BB46A73E2655E740D0B9F52272E34A5A
ArcGIS Server 10.4.1 Checksum (Md5)
ArcGIS Server ArcGIS-1041-S-SEC2018U2-Patch-linux.tar CA2EAA44246D5CA5996D97B57E402CEC
ArcGIS Server 10.3.1 Checksum (Md5)
ArcGIS Server ArcGIS-1031-S-SEC2018U2-Patch-linux.tar 8187B42FC2B9F412690333F2660AF3C1

Uninstalling this patch on Windows

Uninstalling this patch on Linux

Uninstalling this patch is only available on version 10.5.1 and higher. To remove this patch, navigate to the /tmp directory and run the following script as the ArcGIS Install owner:

Patch Updates

Check the Patches and Service Packs page periodically for the availability of additional patches. New information about this patch will be posted here.

How to identify which ArcGIS products are installed

To determine which ArcGIS products are installed, choose the appropriate version of the PatchFinder utility for your environment and run it from your local machine. PatchFinder will list all products, hot fixes, and patches installed on your local machine.

Getting Help

Domestic sites, please contact Esri Technical Support at 1-888-377-4575, if you have any difficulty installing this patch. International sites, please contact your local Esri software distributor.


Geospatial data support in OData

This is a strawman proposal. Please challenge it in the OData mailing list.

OData supports geospatial data types as a new set of primitives. They can be used just like any other primitives - passed in URLs as literals, as types and values for properties, projected in $select, and so on. Like other primitives, there is a set of canonical functions that can be used with them.

Why are we leaning towards this design?

Boxes like these question the design and provide the reasoning behind the choices so far.

This is currently a living document. As we continue to make decisions, we will adjust this document. We will also record our new reasons for our new decisions.

The only restriction, as compared to other primitives, is that geospatial types may not be used as entity keys (see below).

The rest of this spec goes into more detail about the geospatial type system that we support, how geospatial types are represented in $metadata, how their values are represented in Atom and JSON payloads, how they are represented in URLs, and what canonical functions are defined for them.

Modeling

Primitive Types

Our type system is firmly rooted in the OGC Simple Features geometry type system. We diverge from their type system in only four ways.


Figure 1: The OGC Simple Features Type Hierarchy

Why a subset?

Our primary goal with OData is to get everyone into the ecosystem. Thus, we want to make it easy for people to start. Reducing the number of types and operations makes it easier for people to get started. There are extensibility points for those with more complex needs.

First, we expose a subset of the type system and a subset of the operations. For details, see the sections below.

Second, the OGC type system is defined for only 2-dimensional geospatial data. We extend the definition of a position to be able to handle a larger number of dimensions. In particular, we handle 2d, 3dz, 3dm, and 4d geospatial data. See the section on Coordinate Reference Systems (CRS) for more information.

Why separate Geometrical and Geographical types?

They actually behave differently. Assume that you are writing an application to track airplanes and identify when their flight paths intersect, to make sure planes don't crash into each other.

Assume you have two flight plans. One flies North, from (0, 0) to (0, 60). The other flies East, from (-50, 58) to (50, 58). Do they intersect?

In geometric coordinates they clearly do. In geographic coordinates, assuming these are latitude and longitude, they do not.

That's because geographic coordinates are on a sphere. Airplanes actually travel in arcs. The eastward-flying plane actually takes a path that bends up above the flight path of the northward plane. These planes miss each other by hundreds of miles.

Obviously, we want our crash detector to know that these planes are safe.

The two types may have the same functions, but they can have very different implementations. Splitting these into two types makes it easier for function implementers. They don't need to check the CRS in order to pick their algorithm.

Third, the OGC type system ised for flat-earth geospatial data (termed geometrical data hereafter). OGC does not define a system that handles round-earth geospatial data (termed geographical data). Thus, we duplicate the OGC type system to make a parallel set of types for geographic data.

We refer to the geographical vs geometrical distinction as the topology of the type. It describes the shape of the space that includes that value.

Some minor changes in representation are necessary because geographic data is in a bounded surface (the spheroid), while geometric data is in an infinite surface (the plane). This shows up, for example, in the definition of a Polygon. We make as few changes as possible see below for details. Even when we make changes, we follow prior art wherever possible.

Finally, like other primitives in OData, the geospatial primitives do not use inheritance and are immutable. The lack of inheritance, and the subsetting of the OGC type system, give us a difficulty with representing some data. We resolve this with a union type that behaves much like the OGC's base class. See the Union types section below for more details.

Coordinate Reference Systems

Although we support many Coordinate Reference Systems (CRS), there are several limitations (as compared to the OGC standard):

  • We only support named CRSated by an SRID. This should be an official SRID. In particular, we don't support custom CRS defined in the metadata, as does GML.
    • Thus, some data will be inexpressible. For example, there are hydrodynamics readings data represented in a coordinate system where each point has coordinates [lat, long, depth, time, pressure, temperature]. This lets them do all sorts of cool analysis (eg, spatial queries across a surface defined in terms of the temperature and time axes), but is beyond the scope of OData.
    • There are also some standard coordinate systems that don't have codes. So we couldn't represent those. Ex: some common systems in New Zealand & northern Europe.
    • The CRS is static under projection. The above holds even between results of a projection.
    • There is a single "undefined" SRID value. This allows a service to explicitly state that the CRS varies on a per-instance basis.
    • There are client-side libraries that can do some coordinate transforms for you.
    • Servers could expose coordinate transform functions as non-OGC canonical function extensions. See below for details.

    Nominally, the Geometry/Geography type distinction is redundant with the CRS. Each CRS is inherently either round-earth or flat-earth. However, we are not going to automatically resolve this. Our implementation will not know which CRS match which model type. The modeler will have to specify both the type & the CRS.

    There is a useful default CRS for Geography (round earth) data: WGS84. We will use that default if none is provided.

    The default CRS for Geometry (flat earth) data is SRID 0. This represents an arbitrary flat plane with unit-less dimensions.

    The Point types - Edm.Point and Edm.GeometricPoint

    Why the bias towards the geographic types?

    Mobile devices are happening now. A tremendous amount of new data and new applications will be based on the prevalence of these devices. They all use WGS84 for their spatial data.

    Mobile devide developers also tend to be more likely to try to copy some code from a blog or just follow intellisense until something works. Hard-core developers are more likely to read the docs and think things through. So we want to make the obvious path match the mobile developers.

    "Point" is defined as per the OGC. Roughly, it consists of a single position in the underlying topology and CRS. Edm.Point is used for points in the round-earth (geographic) topology. Edm.GeometricPoint is a point in a flat-earth (geometric) topology.

    These primitives are used for properties with a static point type. All entities of this type will have a point value for this property.

    Example properties that would be of type point or geometric point include a user's current location or the location of a bus stop.

    The LineString types - Edm.LineString and Edm.GeometricLineString

    "LineString" is defined as per the OGC. Roughly, it consists of a set of positions with linear interpolation between those positions, all in the same topology and CRS, and represents a path. Edm.LineString is used for geographic LineStrings Edm.GeometricLineString is used for geometric ones.

    These primitives are used for properties with a static path type. Example properties would be the path for a bus route entity, or the path that I followed on my jog this morning (stored in a Run entity).

    The Polygon types - Edm.Polygon and Edm.GeometricPolygon

    "Polygon" is defined as per the OGC. Roughly, it consists of a single bounded area which may contain holes. It is represented using a set of LineStrings that follow specific rules. These rules differ for geometric and geographic topologies.

    These primitives are used for properties with a static single-polygon type. Examples include the area enclosed in a single census tract, or the area reachable by driving for a given amount of time from a given initial point.

    Some things that people think of as polygons, such as the boundaries of states, are not actually polygons. For example, the state of Hawaii includes several islands, each of which is a full bounded polygon. Thus, the state as a whole cannot be represented as a single polygon. It is a Multipolygon, and can be represented in OData only with the base types.

    The base types - Edm.Geography and Edm.Geometry

    The base type represents geospatial data of an undefined type. It might vary per entity. For example, one entity might hold a point, while another holds a multi-linestring. It can hold any of the types in the OGC hierarchy that have the correct topology and CRS.

    Although core OData does not support any functions on the base type, a particular implementation can support operations via extensions (see below). In core OData, you can read & write properties that have the base types, though you cannot usefully filter or order by them.

    The base type is also used for dynamic properties on open types. Because these properties lack metadata, the server cannot state a more specific type. The representation for a dynamic property MUST contain the CRS and topology for that instance, so that the client knows how to use it.

    Therefore, spatial dynamic properties cannot be used in $filter, $orderby, and the like without extensions. The base type does not expose any canonical functions, and spatial dynamic properties are always the base type.

    Edm.Geography represents any value in a geographic topology and given CRS. Edm.Geometry represents any value in a geometric topology and given CRS.

    Each instance of the base type has a specific type that matches an instantiable type from the OGC hierarchy. The representation for an instance makes clear the actual type of that instance.

    Thus, there are no instances of the base type. It is simply a way for the $metadata to state that the actual data can vary per entity, and the client should look there.

    Spatial Properties on Entities

    Zero or more properties in an entity can have a spatial type. The spatial types are regular primitives. All the standard rules apply. In particular, they cannot be shredded under projection. This means that you cannot, for example, use $select to try to pull out the first control position of a LineString as a Point.

    For open types, the dynamic properties will all effectively be of the union type. You can tell the specific type for any given instance, just as for the union type. However, there is no static type info available. This means that dynamic properties need to include the CRS & topology.

    Spatial-Primary Entities (Features)

    This is a non-goal. We do not think we need these as an intrinsic. We believe that we can model this with a pass-through service using vocabularies.

    Communicating

    Metadata

    We define new types: Edm.Geography, Edm.Geometry, Edm.Point, Edm.GeometricPoint, Edm.Polygon, Edm.GeometricPolygon. Each of them has a facet that is the CRS, called "coordinate_system".

    Entities in Atom

    What should we use?

    To spark discussion, and because it is perhaps the best of a bad lot, the strawman proposal is to use the same GML profile as Sql Server uses. This is an admittedly hacked-down simplification of full GML, but seems to match the domain reasonably well.

    Here are several other options, and some of the problems with each:

    GeoRSS only supports some of the types.

    Full GML supports way too much - and is complex because of it.

    KML ised for spatial data that may contain embedded non-spatial data. This allows creating data that you can't then use OData to easily query. We would prefer that people use full OData entities to express this metadata, so that it can be used by clients that do not support geospatial data.

    Another option would be an extended WKT. This isn't XML. This isn't a problem for us, but may annoy other implementers(?). More critically, WKT doesn't support 3d or 4d positions. We need those in order to support full save & load for existing data. The various extensions all disagree on how to extend for additional dimensions. I'd prefer not to bet on any one WKT implementation, so that we can wait for another standards body to pick the right one.

    PostGIS does not seem to have a native XML format. They use their EWKT.

    Finally, there's the SqlServer GML profile. It is a valid GML profile, and isn't quite as much more than we need as is full GML. I resist it mostly because it is a Microsoft format. Of course, if there is no universal format, then perhaps a Microsoft one is as good as we can get.

    Entities in JSON

    Why GeoJSON?

    It flows well in a JSON entity, and is reasonably parsimonious. It is also capable of supporting all of our types and coordinate systems.

    It is, however, not an official standard. Thus, we may have to include it by copy, rather than by reference, in our official standard.

    Another option is to use ESRI's standard for geospatial data in JSON. Both are open standards with existing ecosystems. Both seem sufficient to our needs. Anyone have a good reason to choose one over the other?

    We will use GeoJSON. Technically, since GeoJSON ised to support entire geometry trees, we are only using a subset of GeoJSON. We do not allow the use of types "Feature" or "FeatureCollection." Use entities to correlate a geospatial type with metadata.

    Why the ordering constraint?

    This lets us distinguish a GeoJSON primitive from a complex type without using metadata. That allows clients to parse a JSON entity even if they do not have access to the metadata.

    This is still not completely unambiguous. Another option would be to recommend an "__type" member as well as a "type" member. The primitive would still be valid GeoJSON, but could be uniquely distinguished during parsing.

    We believe the ordering constraint is lower impact.

    Furthermore, "type" SHOULD be ordered first in the GeoJSON object, followed by coordinates, then the optional properties.

    Dynamic Properties

    Geospatial values in dynamic properties are represented exactly as they would be for static properties, with one exception: the CRS is required. The client will not be able to examine metadata to find this value, so the value must specify it.

    Querying

    Geospatial Literals in URIs

    Why only 2d?

    Because OGC only standardized 2d, different implementations differ on how they extended to support 3dz, 3dm, and 4d. We may add support for higher dimensions when they stabilize. As an example, here are three different representations for the same 3dm point:

    • PostGIS: POINTM(1, 2, 3)
    • Sql Server: POINT(1, 2, NULL, 3)
    • ESRI: POINT M (1, 2, 3)

    The standard will probably eventually settle near the PostGIS or ESRI version, but it makes sense to wait and see. The cost of choosing the wrong one is very high: we would split our ecosystem in two, or be non-standard.

    There are at least 3 common extensions to WKT (PostGIS, ESRI, and Sql Server), but all use the same extension to include an SRID. As such, they all use the same representation for values with 2d coordinates. Here are some examples:

    If OData were to support 3dm, then that last one could be exposed and used something like one of (depending on which standard we go with):

    Why not GeoJSON?

    GeoJSON actually makes a lot of sense. It would reduce the number of formats used in the standard by 1, making it easier for people to add geospatial support to service endpoints. We are also considering using JSON to represent entity literals used with Functions. Finally, it would enable support for more than 2 dimensions.

    However, JSON has a lot of nesting brackets, and they are prominent in GeoJSON. This is fine in document bodies, where you can use linebreaks to make them readable. However, it is a problem in URLs. Observe the following example (EWKT representation is above, for comparison):

    Not usable everywhere

    Why not?

    Geospatial values are neither equality comparable nor partially-ordered. Therefore, the results of these operations would be undefined.

    Furthermore, geospatial types have very long literal representations. This would make it difficult to read a simple URL that navigates along a series of entities with geospatial keys.

    If your entity concurrency control needs to incorporate changes to geospatial properties, then you should probably use some sort of Entity-level version tracking.

    Geospatial primitives MAY NOT be compared using lt , eq , or similar comparison operators.

    Geospatial primitives MAY NOT be used as keys.

    Geospatial primitives MAY NOT be used as part of an entity's ETag.

    Distance Literals in URLs

    Some queries, such as the coffee shop search above, need to represent a distance.

    Distance is represented the same in the two topologies, but interpreted differently. In each case, it is represented as a float scalar. The units are interpreted by the topology and coordinate system for the property with which it is compared or calculated.

    Because a plane is uniform, we can simply define distances in geometric coordinates to be in terms of that coordinate system's units. This works as long as each axis uses the same unit for its coordinates, which is the general case.

    Geographic topologies are not necessarily uniform. The distance between longitude -125 and -124 is not the same at all points on the globe. It goes to 0 at the poles. Similarly, the distance between 30 and 31 degrees of latitude is not the same as the distance between 30 and 31 degrees of longitude (at least, not everywhere). Thus, the underlying coordinate system measures position well, but does not work for describing a distance.

    For this reason, each geographic CRS also defines a unit that will be used for distances. For most CRSs, this is meters. However, some use US feet, Indian feet, German meters, or other units. In order to determine the meaning of a distance scalar, the developer must read the reference for the CRS involved.

    New Canonical Functions

    Each of these canonical functions is defined on certain geospatial types. Thus, each geospatial primitive type has a set of corresponding canonical functions. An OData implementation that supports a given geospatial primitive type SHOULD support using the corresponding canonical functions in $filter. It MAY support using the corresponding canonical functions in $orderby.

    Are these the right names?

    We might consider defining these canonical functions as Geo.distance, etc. That way, individual server extensions for standard OGC functions would feel like core OData. This works as long as we explicitly state (or reference) the set of functions allowed in Geo.

    Distance

    Distance is a canonical function defined between points. It returns a distance, as defined above. The two arguments must use the same topology & CRS. The distance is measured in that topology. Distance is one of the corresponding functions for points. Distance is defined as equivalent to the OGC ST_Distance method for their overlapping domain, with equivalent semantics for geographical points.

    Intersects

    Intersects identifies whether a point is contained within the enclosed space of a polygon. Both arguments must be of the same topology & CRS. It returns a Boolean value. Intersects is a corresponding function for any implementation that includes both points and polygons. Intersects is equivalent to OGC's ST_Intersects in their area of overlap, extended with the same semantics for geographic data.

    Length

    Length returns the total path length of a linestring. It returns a distance, as defined above. Length is a corresponding function for linestrings. Length is equivalent to the OGC ST_Length operation for geometric linestrings, and is extended with equivalent semantics to geographic data.

    Why this subset?

    It matches the two most common scenarios: find all the interesting entities near me, and find all the interesting entities within a particular region (such as a viewport or an area a use draws on a map).

    Technically, linestrings and length are not needed for these scenarios. We kept them because the spec felt jagged without them.

    All other OGC functions

    We don't support these, because we want to make it easier to stand up a server that is not backed by a database. Some are very hard to implement, especially in geographic coordinates.

    A provider that is capable of handling OGC Simple Features functions MAY expose those as Functions on the appropriate geospatial primitives (using the new Function support).

    We are reserving a namespace, " Geo ," for these standard functions. If the function matches a function specified in Simple Features, you SHOULD place it in this namespace. If the function does not meet the OGC spec, you MUST NOT place it in this namespace. Future versions of the OData spec may define more canonical functions in this namespace. The namespace is reserved to allow exactly these types of extensions without breaking existing implementations.

    In the SQL version of the Simple Features standard, the function names all start with ST_ as a way to provide namespacing. Because OData has real namespaces, it does not need this pseudo-namespace. Thus, the name SHOULD NOT include the ST_ when placed in the Geo namespace. Similarly, the name SHOULD be translated to lowercase, to match other canonical functions in OData. For example, OGC's ST_Buffer would be exposed in OData as Geo.buffer . This is similar to the Simple Features implementation on CORBA.

    All other geospatial functions

    Any other geospatial operations MAY be exposed by using Functions. These functions are not defined in any way by this portion of the spec. See the section on Functions for more information, including namespacing issues.

    Examples

    Find coffee shops near me

    Find the nearest 3 coffee shops, by drive time

    This is not directly supported by OData. However, it can be handled by an extension. For example:

    Note that while distanceto is symmetric in its args, MyNamespace.driving_time_to might not be. For example, it might take one-way streets into account. This would be up to the data service that is defining the function.

    Compute distance along routes

    Find all houses close enough to work

    For this example, let's assume that there's one OData service that can tell you the drive time polygons around a point (via a service operation). There's another OData service that can search for houses. You want to mash them up to find you houses in your price range from which you can get to work in 15 minutes.

    Then, you'd send the actual search query to the second endpoint:

    Is there any way to make that URL shorter? And perhaps do this in one query?

    This is actually an overly-simple polygon for a case like this. This is just a square with a single hole in it. A real driving polygon would contain multiple holes and a lot more boundary points. So that polygon in the final query would realistically be 3-5 times as long in the URL.

    It would be really nice to support reference arguments in URLs (with cross-domain support). Then you could represent the entire example in a single query:

    However, this is not supported in OData today.

    OK, but isn't there some other way to make the URL shorter? Some servers can't handle this length!

    We are looking at options. The goal is to maintain GET-ability and cache-ability. A change in the parameters should be visible in the URI, so that caching works correctly.

    The current front-runner idea is to allow the client to place parameter values into a header. That header contains a JSON dictionary of name/value pairs. If it does so, then it must place the hashcode for that dictionary in the query string. The resulting request looks like:

    Of course, nothing about this format is at all decided. For example, should that header value be fully in JSON (using the same formatting as in a JSON payload)? Should it be form encoded instead of JSON? Perhaps the entire query string should go in the header, with only a $query=HASHCODE in the URL? And there are a lot more options.


    Create your first Restful web service in ASP.NET

    Now in this REST API tutorial, we will learn how to create a Restful web service in ASP.NET:

    Web services can be created in a variety of languages. Many integrated development environments can be used to create REST-based services.

    In this RESTful API example, we are going to create our REST application in .Net using Visual Studio. In our example, for Restful web services we are going to emulate the following REST service example.

    We are going to have a Restful web service which will work on the below set of data.

    The below set of data represents an REST API example of having a company which exposes the Tutorial's they have based on the Tutorialid.

    TutorialidTutorialName
    0 Arrays
    1 Queues
    2 Stacks

    1. GET Tutorial – When a client invokes this Restful API, they will be given the entire set of Tutorials available from the web service.
    2. GET Tutorial/Tutorialid - When a client invokes this Restful API, they will be given the Tutorial name based on the Tutorialid sent by the client.
    3. POST Tutorial/Tutorialname - When a client invokes this Restful API, the client will submit a request to insert a Tutorialname. The web service will then add the submitted Tutorial name to the collection.
    4. DELETE Tutorial/Tutorialid- When a client invokes this Restful API, the client will submit a request to delete a Tutorialname based on the Tutorialid. The web service will then delete the submitted Tutorial name from the collection.

    Let's follow the below steps in this RESTful API tutorial to create our first RESTful web services, which carries out the above implementation.

    Step 1) The first step is to create an empty Asp.Net Web application. From Visual Studio 2013, click on the menu option File->New project.

    Once you click on the New Project option, Visual Studio will then give you another dialog box for choosing the type of project and to give the necessary details of the project. This is explained in the next step of this RESTful API tutorial

    1. Ensure to first choose the RESTful web services C# web template of ASP.NET Web application. The project has to be of this type in order to create web services project. By choosing this options, Visual Studio will then carry out the necessary steps to add required files which are required by any web-based application.
    2. Give a name for your project which in our case has been given as "Webservice.REST".
    3. Then ensure to give a location, where the project files will be stored.

    Once done you will see the project file created in your solution explorer in Visual Studio 2013.

    In the dialog box which appears, you need to perform the following

    1. Choose the option of WCF Service (Ajax-enabled) – Choose a file of this type, it causes the Visual studio to add some basic code which helps one create a RESTful web service. WCF stands for Windows Communication Foundation. WCF is a library for applications of various platforms or the same platform to communicate over the various protocols such as TCP, HTTP, HTTPS. Ajax basically is Asynchronous JavaScript and XML. AJAX allows web pages to be updated asynchronously by exchanging small amounts of data with the server behind the scenes.
    2. Next give a name for the service which is TutorialService in our case.
    3. Finally, click the Add button to add the service to the solution.

    1. The first bit is to add code to represent our data which will be used in our program. So we are going to have a list of string variables with values of "Arrays", "Queues" and "Stacks". This will represent the tutorials name available through our hosting web service.

    Step 6) Next we will define the code for our GET method. This code will also reside in the same TutorialService.svc file. This code will run whenever we call the service from our browser.

    • If a user wants a list of all Tutorials available, then the below code would need to be written to accomplish this.

    1. The first line of code is the most important. It is used to define how we can call this method via a URL. So if the link to our web service is http://localhost:52645/TutorialService.svc and if we append the '/Tutorial' to the URL as http://localhost:52645/TutorialService.svc/Tutorial , the above code will be invoked. The attribute of 'WebGet' is a parameter which allows this method to be a RESTful method so that it can be invoked via the GET verb.
    2. This section of code is used to go through our list of strings in the 'lst' variable and return all of them to the calling program.

    Step 7) The code below ensures that if a GET call is made to the Tutorial Service with a Tutorial id, then it would return the corresponding Tutorial Name based on the Tutorial id.

    1. The first line of code is the most important. It is used to define how we can call this method via a URL. So if the link to our web service is http://localhost:52645/TutorialService.svc and if we append the '/Tutorial/' to the URL, then we would be able to call the web service as http://localhost:52645/TutorialService.svc/Tutorial/1 as an example. The web service would then need to return the Tutorial name which had the Tutorial id#1.
    2. This section of code is used to return the "Tutorial name" which has the Tutorial id passed to the web method.
    • By default, what needs to be remembered is that whatever is passed to the URL in the browser is a string.
    • But you have to remember that the Index to our list has to be an integer, so we are adding the necessary code to first convert the Tutorialid to an Integer and then use it to access the index position in our list and
    • Then return the value to the calling program accordingly.

    Step 8) The next step is to write up the code for our POST method. This method will be invoked whenever we want to add a string value to our list of Tutorials via the POST method. For example, if you wanted to add the Tutorial name of "Software Testing" then you would need to use the POST method.

    1. The first line is the 'WebInvoke' attribute which has been attached to our method. This allows the method to be invoked via the POST call. The RequestFormat and ResponseFormat attribute have to be mentioned as JSON, since when posting values to a RESTFul web service, the values have to be in this format.
    2. The second line of code is used to add the string value passed via the POST call to our existing list of Tutorial strings.

    Step 9) Finally we are going to add our method to handle the DELETE operation. This method will be invoked whenever we want to delete an existing string value from our list of Tutorials via the DELETE method.

    1. The first line is the 'WebInvoke' attribute which has been attached to our method. This allows the method to be invoked via the POST call. The RequestFormat and ResponseFormat attribute have to be mentioned as JSON, since when posting values to a RESTFul web service, the values have to be in this format. Note that the Method parameter is being set to "DELETE." This means that whenever we issue the DELETE verb, this method will be invoked.
    2. The second line of code is used to take the Tutorialid sent via the DELETE call and subsequently delete that id from our list. (The Int32 function in code is used to convert the Tutorial ID from a string variable to an integer).

    Arcrest.ags.mapservice module¶

    contains information about a map service

    returns all layers for the service

    returns the service’s capabilities

    returns the copyright text

    returns the map service current version

    returns the map service description

    returns the document information as a dictionary

    downloads the metadata file to a given path

    downloads the items’s thumbnail

    estimateExportTilesSize ( exportBy, levels, tilePackage=False, exportExtent='DEFAULTEXTENT', areaOfInterest=None, async=True ) [source] ¶

    The estimateExportTilesSize operation is an asynchronous task that allows estimation of the size of the tile package or the cache data set that you download using the Export Tiles operation. This operation can also be used to estimate the tile count in a tile package and determine if it will exceced the maxExportTileCount limit set by the administrator of the service. The result of this operation is Map Service Job. This job response contains reference to Map Service Result resource that returns the total size of the cache to be exported (in bytes) and the number of tiles that will be exported.

    tilePackage - Allows estimating the size for either a tile package

    or a cache raster data set. Specify the value true for tile packages format and false for Cache Raster data set. The default value is False

    cache dataset to be exported. If extent does not include a spatial reference, the extent values are assumed to be in the spatial reference of the map. The default value is full extent of the tiled map service.

    service levels to export. The values can be Level IDs, cache scales or the Resolution (in the case of image services).

    the estimates. The values should correspond to Level IDs, cache scales or the Resolution as specified in exportBy parameter. The values can be comma separated values or a range.

    exporting tiles within the specified polygon areas. This parameter supersedes exportExtent parameter. Also excepts geometry.Polygon.

    requiring the tool status to be checked manually to force it to run synchronously the tool will check the status until the estimation completes. The default is True, which means the status of the job and results need to be checked manually. If the value is set to False, the function will wait until the task completes.

    The export operation is performed on a map service resource. The result of this operation is a map image resource. This resource provides information about the exported map image such as its URL, its width and height, extent and scale. Inputs:

    bbox - envelope geometry object size - size of image in pixels dpi - dots per inch imageSR - spatial reference of the output image image_format - Description: The format of the exported image.

    The default format is .png. Values: png | png8 | png24 | jpg | pdf | bmp | gif

    The exportTiles operation is performed as an asynchronous task and allows client applications to download map tiles from a server for offline use. This operation is performed on a Map Service that allows clients to export cache tiles. The result of this operation is Map Service Job. This job response contains a reference to the Map Service Result resource, which returns a URL to the resulting tile package (.tpk) or a cache raster dataset. exportTiles can be enabled in a service by using ArcGIS for Desktop or the ArcGIS Server Administrator Directory. In ArcGIS for Desktop make an admin or publisher connection to the server, go to service properties, and enable Allow Clients to Export Cache Tiles in the advanced caching page of the Service Editor. You can also specify the maximum tiles clients will be allowed to download. The default maximum allowed tile count is 100,000. To enable this capability using the Administrator Directory, edit the service, and set the properties exportTilesAllowed=true and maxExportTilesCount=100000.

    At 10.2.2 and later versions, exportTiles is supported as an operation of the Map Server. The use of the http://Map Service/exportTiles/submitJob operation is deprecated. You can provide arguments to the exportTiles operation as defined in the following parameters table:

    Inputs: exportBy - The criteria that will be used to select the tile service levels to export. The values can be Level IDs, cache scales. or the resolution (in the case of image services). Values: LevelID | Resolution | Scale levels - Specifies the tiled service levels to export. The values

    should correspond to Level IDs, cache scales. or the resolution as specified in exportBy parameter. The values can be comma separated values or a range. Make sure tiles are present at the levels where you attempt to export tiles.

    raster data set. If the value is true, output will be in tile package format, and if the value is false, a cache raster data set is returned. The default value is false

    cache dataset to be exported. If extent does not include a spatial reference, the extent values are assumed to be in the spatial reference of the map. The default value is full extent of the tiled map service.

    compression of JPEG tiles and reduce the size of the downloaded tile package or the cache raster data set. Compressing tiles slightly compromises the quality of tiles but helps reduce the size of the download. Try sample compressions to determine the optimal compression before using this feature.

    Boolean if export tiles is allowed

    find ( searchText, layers, contains=True, searchFields='', sr='', layerDefs='', returnGeometry=True, maxAllowableOffset='', geometryPrecision='', dynamicLayers='', returnZ=False, returnM=False, gdbVersion='' ) [source] ¶

    performs the map service find operation

    returns the full extent of the map service

    generateKML ( save_location, docName, layers, layerOptions='composite' ) [source] ¶

    The generateKml operation is performed on a map service resource. The result of this operation is a KML document wrapped in a KMZ file. The document contains a network link to the KML Service endpoint with properties and parameters you specify. Inputs:

    docName - The name of the resulting KML document. This is the name that appears in the Places panel of Google Earth. layers - the layers to perform the generateKML operation on. The layers are specified as a comma-separated list of layer ids. layerOptions - The layer drawing options. Based on the option

    chosen, the layers are drawn as one composite image, as separate images, or as vectors. When the KML capability is enabled, the ArcGIS Server administrator has the option of setting the layer operations allowed. If vectors are not allowed, then the caller will not be able to get vectors. Instead, the caller receives a single composite image. values: composite | separateImage |

    returns objects for all map service extensions

    getFeatureDynamicLayer ( oid, dynamicLayer, returnZ=False, returnM=False ) [source] ¶

    The feature resource represents a single feature in a dynamic layer in a map service

    reutrn boolean if has versioned data

    identify ( geometry, mapExtent, imageDisplay, tolerance, geometryType='esriGeometryPoint', sr=None, layerDefs=None, time=None, layerTimeOptions=None, layers='top', returnGeometry=True, maxAllowableOffset=None, geometryPrecision=None, dynamicLayers=None, returnZ=False, returnM=False, gdbVersion=None ) [source] ¶

    The identify operation is performed on a map service resource to discover features at a geographic location. The result of this operation is an identify results resource. Each identified result includes its name, layer ID, layer name, geometry and geometry type, and other attributes of that result as name-value pairs.

    Inputs: geometry - The geometry to identify on. The type of the geometry is

    time - The time instant or the time extent of the features to be identified.

    layerTimeOptions - The time options per layer. Users can indicate whether or not the layer should use the time extent specified by the time parameter or not, whether to draw the layer features cumulatively or not and the time offsets for the layer. layers - The layers to perform the identify operation on. There are three ways to specify which layers to identify on: top: Only the top-most layer at the specified location. visible: All visible layers at the specified location. all: All layers at the specified location. tolerance - The distance in screen pixels from the specified geometry within which the identify should be performed. The value for the tolerance is an integer. mapExtent - The extent or bounding box of the map currently being viewed. Unless the sr parameter has been specified, the mapExtent is assumed to be in the spatial reference of the map. Syntax: <xmin>, <ymin>, <xmax>, <ymax> The mapExtent and the imageDisplay parameters are used by the server to determine the layers visible in the current extent. They are also used to calculate the distance on the map to search based on the tolerance in screen pixels. imageDisplay - The screen image display parameters (width, height, and DPI) of the map being currently viewed. The mapExtent and the imageDisplay parameters are used by the server to determine the layers visible in the current extent. They are also used to calculate the distance on the map to search based on the tolerance in screen pixels. Syntax: <width>, <height>, <dpi> returnGeometry - If true, the resultset will include the geometries associated with each result. The default is true. maxAllowableOffset - This option can be used to specify the maximum allowable offset to be used for generalizing geometries returned by the identify operation. The maxAllowableOffset is in the units of the sr. If sr is not specified, maxAllowableOffset is assumed to be in the unit of the spatial reference of the map. geometryPrecision - This option can be used to specify the number of decimal places in the response geometries returned by the identify operation. This applies to X and Y values only (not m or z-values). dynamicLayers - Use dynamicLayers property to reorder layers and change the layer data source. dynamicLayers can also be used to add new layer that was not defined in the map used to create the map service. The new layer should have its source pointing to one of the registered workspaces that was defined at the time the map service was created. The order of dynamicLayers array defines the layer drawing order. The first element of the dynamicLayers is stacked on top of all other layers. When defining a dynamic layer, source is required. returnZ - If true, Z values will be included in the results if the features have Z values. Otherwise, Z values are not returned. The default is false. This parameter only applies if returnGeometry=true. returnM - If true, M values will be included in the results if the features have M values. Otherwise, M values are not returned. The default is false. This parameter only applies if returnGeometry=true.

    gdbVersion - Switch map layers to point to an alternate geodatabase version.


    ArcGIS Maps for Power BI Gov by Esri now available

    We are happy to announce that Power BI Gov users can now use ArcGIS Maps for Power BI Gov (preview) created by Esri! This brings several new capabilities to Power BI Gov users.

    Geographic information systems (GIS) helps users gain a better understanding of the world by using spatial analysis on a map’s data layers. It’s a way to discover, use, make and share the maps that are important to your organization.

    The ArcGIS Maps for Power BI visual is provided by Esri, so before you get started, you’ll need to consent to Esri’s terms of service and privacy statements, and acknowledge you’re using the services operated by Esri in Power BI.

    We welcome your comments and suggestions to help us continually improve your Azure Government experience. To stay up to date on all things Azure Government, be sure to subscribe to our RSS feed and to receive emails, click “Subscribe by Email!” on the Azure Government Blog. To experience the power of Azure Government for your organization, sign up for an Azure Government Trial.


    Homework

    Your homework for this chapter is an exploration of API design. We'll look at a few examples using two notable APIs to see what's available and how things are structured.

    Example 1: The Facebook API

    Answer the following questions about Facebooks's API design.

    1. What 3 terms does Facebook use to describe what the Graph API is composed of?
      Open "Quickstart" to find the answer.
    2. What does 'me' in the /me endpoint translate to as a convenience?
      Open "Using the Graph API" to find the answer.

    Example 2: The Twitter API

    Answer the following questions about Twitter's API design.

    1. What 4 resources, referred to as "objects", does Twitter make available?
      Open the docs index to find the answer.
    2. What parameter is required to create a new favorite?
      Open the "POST favorites/create" to find the answer.

    In the next chapter, we explore ways to make the client react to changes on the server in real-time.

    1. Unknown, Image Obsessed. National Geographic. April, 2012.

    2. SOAP stood for Simple Object Access Protocol. It was originally used for a very specific type of API access. As developers found ways to apply it to more situations, the name no longer fit, so in SOAP version 1.2 the acronym was dropped.

    4. SOAP provides a very structured architecture. The structure provides system reliability, standard extensions for adding functionality to the protocol, and makes it possible for tools to generate code, saving on development time.

    Brought to you by your friends at Zapier.

    Previous Chapter

    Chapter 5: Authentication, Part 2

    Next Chapter

    Chapter 7: Real-Time Communication

    Build workflows with your apps.

    Connect apps. Automate tasks. Get more done.

    “Zapier helps me build processes and automation into my business like a programmer without having to learn to code.”

    Lawrence Watkins, co-founder of Great Black Speakers


    Watch the video: Extending ArcGIS Server (September 2021).