Supported data format details
This article provides specifics on the read and write support for all XML tags and Well-Known Text geometry types. It also details how the delimited spatial data is parsed in the spatial IO module.
Supported XML namespaces
The spatial IO module supports XML tags from the following namespaces.
Namespace Prefix | Namespace URI | Notes |
---|---|---|
atom |
http://www.w3.org/2005/Atom |
|
geo |
http://www.w3.org/2003/01/geo/wgs84_pos# |
Read only support in GeoRSS files. |
georss |
http://www.georss.org/georss |
|
geourl |
http://geourl.org/rss/module/ |
Read only support in GeoRSS files. |
gml |
http://www.opengis.net/gml |
|
gpx |
http://www.topografix.com/GPX/1/1 |
|
gpxx |
http://www.garmin.com/xmlschemas/GpxExtensions/v3 |
Read only support in GPX files. Parses and uses DisplayColor. All other properties added to shape metadata. |
gpx_style |
http://www.topografix.com/GPX/gpx_style/0/2 |
Supported in GPX files. Uses line color. |
gx |
http://www.google.com/kml/ext/2.2 |
|
kml |
http://www.opengis.net/kml/2.2 |
|
rss |
Read only. GeoRSS writes using Atom format. |
Supported XML elements
The spatial IO module supports the following XML elements. Any XML tags that aren't supported are converted into a JSON object. Then, each tag is added as a property in the properties
field of the parent shape or layer.
KML elements
The spatial IO module supports the following KML elements.
Element Name | Read | Write | Notes |
---|---|---|---|
address |
partial | yes | Object is parsed but isn't used for positioning shape. |
AddressDetails |
partial | no | Object is parsed but isn't used for positioning shape. |
atom:author |
yes | yes | |
atom:link |
yes | yes | |
atom:name |
yes | yes | |
BalloonStyle |
partial | partial | displayMode isn't supported. Converted to a PopupTemplate . To write, add a popupTemplate property as a property of the feature you want to write it for. |
begin |
yes | yes | |
color |
yes | yes | Includes #AABBGGRR and #BBGGRR . Parsed into a CSS color string |
colorMode |
yes | no | |
coordinates |
yes | yes | |
Data |
yes | yes | |
description |
yes | yes | |
displayName |
yes | yes | |
Document |
yes | yes | |
drawOrder |
partial | no | Read for ground overlays and used to sort them. |
east |
yes | yes | |
end |
yes | yes | |
ExtendedData |
yes | yes | Supports untyped Data , SimpleData or Schema , and entity replacements of the form $[dataName] . |
extrude |
partial | partial | Only supported for polygons. MultiGeometry that have polygons of different heights are broken out into individual features. Line styles aren't supported. Polygons with an altitude of 0 is rendered as a flat polygon. When reading, the altitude of the first coordinate in the exterior ring is added as a height property of the polygon. Then, the altitude of the first coordinate is used to render the polygon on the map. |
fill |
yes | yes | |
Folder |
yes | yes | |
GroundOverlay |
yes | yes | color isn't supported |
heading |
partial | no | Parsed but not rendered by SimpleDataLayer . Only writes if data is stored in the property of the shape. |
hotSpot |
yes | partial | Only writes if data is stored in the property of the shape. Units are outputted as "pixels" only. |
href |
yes | yes | |
Icon |
partial | partial | Parsed but not rendered by SimpleDataLayer . Only writes the icon property of the shape if it contains a URI data. Only href is supported. |
IconStyle |
partial | partial | icon , heading , colorMode , and hotspots values are parsed, but not rendered by SimpleDataLayer |
innerBoundaryIs |
yes | yes | |
kml |
yes | yes | |
LabelStyle |
no | no | |
LatLonBox |
yes | yes | |
gx:LatLonQuad |
yes | yes | |
LinearRing |
yes | yes | |
LineString |
yes | yes | |
LineStyle |
yes | yes | colorMode isn't supported. |
Link |
yes | no | Only the href property is supported for network links. |
MultiGeometry |
partial | partial | May be broken out into individual features when read. |
name |
yes | yes | |
NetworkLink |
yes | no | Links need to be on the same domain as the document. |
NetworkLinkControl |
no | no | |
north |
yes | yes | |
open |
yes | yes | |
outerBoundaryIs |
yes | yes | |
outline |
yes | yes | |
overlayXY |
no | no | |
Pair |
partial | no | Only the normal style in a StyleMap is supported. highlight isn't supported. |
phoneNumber |
yes | yes | |
PhotoOverlay |
no | no | |
Placemark |
yes | yes | |
Point |
yes | yes | |
Polygon |
yes | yes | |
PolyStyle |
yes | yes | |
Region |
partial | partial | LatLongBox is supported at the document level. |
rotation |
no | no | |
rotationXY |
no | no | |
scale |
no | no | |
Schema |
yes | yes | |
SchemaData |
yes | yes | |
schemaUrl |
partial | yes | Doesn't support loading styles from external documents that aren't included in a KMZ. |
ScreenOverlay |
no | no | |
screenXY |
no | no | |
SimpleData |
yes | yes | |
SimpleField |
yes | yes | |
size |
no | no | |
Snippet |
partial | partial | maxLines attribute is ignored. |
south |
yes | yes | |
Style |
yes | yes | |
StyleMap |
partial | no | Only the normal style in a StyleMap is supported. |
styleUrl |
partial | yes | External style URLs aren't supported. |
text |
yes | yes | Replacement of $[geDirections] isn't supported |
textColor |
yes | yes | |
TimeSpan |
yes | yes | |
TimeStamp |
yes | yes | |
value |
yes | yes | |
viewRefreshMode |
partial | no | If pointing to a WMS service, then only onStop is supported for ground overlays. Appends BBOX={bboxWest},{bboxSouth},{bboxEast},{bboxNorth} to the URL and update as the map moves. |
visibility |
yes | yes | |
west |
yes | yes | |
when |
yes | yes | |
width |
yes | yes |
GeoRSS elements
The spatial IO module supports the following GeoRSS elements.
Element Name | Read | Write | Notes |
---|---|---|---|
atom:author |
yes | yes | |
atom:category |
yes | yes | |
atom:content |
yes | yes | |
atom:contributor |
yes | yes | |
atom:email |
yes | yes | |
atom:entry |
yes | yes | |
atom:feed |
yes | yes | |
atom:icon |
yes | yes | |
atom:id |
yes | yes | |
atom:link |
yes | yes | |
atom:logo |
yes | yes | |
atom:name |
yes | yes | |
atom:published |
yes | yes | |
atom:rights |
yes | yes | |
atom:source |
yes | yes | |
atom:subtitle |
yes | yes | |
atom:summary |
yes | yes | |
atom:title |
yes | yes | |
atom:updated |
yes | yes | |
atom:uri |
yes | yes | |
geo:lat |
yes | no | Written as a georss:point . |
geo:lon |
yes | no | Written as a georss:point . |
geo:long |
yes | no | Written as a georss:point . |
georss:box |
yes | no | Read as a polygon and given a subType property of "Rectangle" |
georss:circle |
yes | yes | |
georss:elev |
yes | yes | |
georss:featurename |
yes | yes | |
georss:featuretypetag |
yes | yes | |
georss:floor |
yes | yes | |
georss:line |
yes | yes | |
georss:point |
yes | yes | |
georss:polygon |
yes | yes | |
georss:radius |
yes | yes | |
georss:relationshiptag |
yes | yes | |
georss:where |
yes | yes | |
geourl:latitude |
yes | no | Written as a georss:point . |
geourl:longitude |
yes | no | Written as a georss:point . |
position |
yes | no | Some XML feeds wrap GML with a position tag instead of wrapping it with a georss:where tag. Read this tag, but writes using a georss:where tag. |
rss |
yes | no | GeoRSS written in ATOM format. |
rss:author |
yes | partial | Written as an atom:author . |
rss:category |
yes | partial | Written as an atom:category . |
rss:channel |
yes | no | |
rss:cloud |
yes | no | |
rss:comments |
yes | no | |
rss:copyright |
yes | partial | Written as an atom:rights if shape doesn't have a rights properties property already. |
rss:description |
yes | partial | Written as an atom:content if shape doesn't have a content properties property already. |
rss:docs |
yes | no | |
rss:enclosure |
yes | no | |
rss:generator |
yes | no | |
rss:guid |
yes | partial | Written as an atom:id if shape doesn't have an id properties property already. |
rss:image |
yes | partial | Written as an atom:logo if shape doesn't have a logo properties property already. |
rss:item |
yes | partial | Written as an atom:entry . |
rss:language |
yes | no | |
rss:lastBuildDate |
yes | partial | Written as an atom:updated if shape doesn't have an updated properties property already. |
rss:link |
yes | partial | Written as an atom:link . |
rss:managingEditor |
yes | partial | Written as an atom:contributor . |
rss:pubDate |
yes | partial | Written as an atom:published if shape doesn't have a published properties property already. |
rss:rating |
yes | no | |
rss:skipDays |
yes | no | |
rss:skipHours |
yes | no | |
rss:source |
yes | partial | Written as an atom:source containing an atom:link . |
rss:textInput |
yes | no | |
rss:title |
yes | partial | Written as an atom:title . |
rss:ttl |
yes | no | |
rss:webMaster |
yes | no |
GML elements
The spatial IO module supports the following GML elements.
Element Name | Read | Write | Notes |
---|---|---|---|
gml:coordinates |
yes | no | Written as gml:posList . |
gml:curveMember |
yes | no | |
gml:curveMembers |
yes | no | |
gml:Box |
yes | no | Written as gml:Envelope . |
gml:description |
yes | yes | |
gml:Envelope |
yes | yes | |
gml:exterior |
yes | yes | |
gml:Feature |
yes | no | Written as a shape. |
gml:FeatureCollection |
yes | no | Written as a geometry collection. |
gml:featureMember |
yes | no | Written as a geometry collection. |
gml:geometry |
yes | no | Written as a shape. |
gml:geometryMember |
yes | yes | |
gml:geometryMembers |
yes | yes | |
gml:identifier |
yes | yes | |
gml:innerBoundaryIs |
yes | no | Written using gml.interior . |
gml:interior |
yes | yes | |
gml:LinearRing |
yes | yes | |
gml:LineString |
yes | yes | |
gml:lineStringMember |
yes | yes | |
gml:lineStringMembers |
yes | no | |
gml:MultiCurve |
yes | no | Only reads gml:LineString members. Written as gml.MultiLineString |
gml:MultiGeometry |
partial | partial | Only read as a FeatureCollection. |
gml:MultiLineString |
yes | yes | |
gml:MultiPoint |
yes | yes | |
gml:MultiPolygon |
yes | yes | |
gml:MultiSurface |
yes | no | Only reads gml:Polygon members. Written as gml.MultiPolygon |
gml:name |
yes | yes | |
gml:outerBoundaryIs |
yes | no | Written using gml.exterior . |
gml:Point |
yes | yes | |
gml:pointMember |
yes | yes | |
gml:pointMembers |
yes | no | |
gml:Polygon |
yes | yes | |
gml:polygonMember |
yes | yes | |
gml:polygonMembers |
yes | no | |
gml:pos |
yes | yes | |
gml:posList |
yes | yes | |
gml:surfaceMember |
yes | yes |
More notes
- Member elements are searched for a geometry that may be buried within child elements. This search operation is necessary as many XML formats that extend from GML may not place a geometry as a direct child of a member element.
srsName
is partially supported for WGS84 coordinates and the following codes:EPSG:4326), and web Mercator (EPSG:3857 or one of its alternative codes. Any other coordinate system is parsed as WGS84 as-is.- Unless specified when reading an XML feed, the axis order is determined based on hints in the XML feed. A preference is given for the "latitude, longitude" axis order.
- Unless a custom GML namespace is specified for the properties when writing to a GML file, other property information isn't added.
GPX elements
The spatial IO module supports the following GPX elements.
Element Name | Read | Write | Notes |
---|---|---|---|
gpx:ageofdgpsdata |
yes | yes | |
gpx:author |
yes | yes | |
gpx:bounds |
yes | yes | Converted into a LocationRect when read. |
gpx:cmt |
yes | yes | |
gpx:copyright |
yes | yes | |
gpx:desc |
yes | yes | Copied into a description property when read to align with other XML formats. |
gpx:dgpsid |
yes | yes | |
gpx:ele |
yes | yes | |
gpx:extensions |
partial | partial | When read, style information is extracted. All other extensions are flattened into a simple JSON object. Only shape style information is written. |
gpx:geoidheight |
yes | yes | |
gpx:gpx |
yes | yes | |
gpx:hdop |
yes | yes | |
gpx:link |
yes | yes | |
gpx:magvar |
yes | yes | |
gpx:metadata |
yes | yes | |
gpx:name |
yes | yes | |
gpx:pdop |
yes | yes | |
gpx:rte |
yes | yes | |
gpx:rtept |
yes | yes | |
gpx:sat |
yes | yes | |
gpx:src |
yes | yes | |
gpx:sym |
yes | yes | Value is captured, but it isn't used to alter the pushpin icon. |
gpx:text |
yes | yes | |
gpx:time |
yes | yes | |
gpx:trk |
yes | yes | |
gpx:trkpt |
yes | yes | |
gpx:trkseg |
yes | yes | |
gpx:type |
yes | yes | |
gpx:vdop |
yes | yes | |
gpx:wpt |
yes | yes | |
gpx_style:color |
yes | yes | |
gpx_style:line |
partial | partial | color , opacity , width , lineCap are supported. |
gpx_style:opacity |
yes | yes | |
gpx_style:width |
yes | yes | |
gpxx:DisplayColor |
yes | no | Used to specify the color of a shape. If writing, gpx_style:line color is used instead. |
gpxx:RouteExtension |
partial | no | All properties are read into properties . Only DisplayColor is used. |
gpxx:TrackExtension |
partial | no | All properties are read into properties . Only DisplayColor is used. |
gpxx:WaypointExtension |
partial | no | All properties are read into properties . Only DisplayColor is used. |
gpx:keywords |
yes | yes | |
gpx:fix |
yes | yes |
More notes
When writing;
- MultiPoints is broken up into individual waypoints.
- Polygons and MultiPolygons are written as tracks.
Supported Well-Known Text geometry types
Geometry type | Read | Write |
---|---|---|
POINT | x | x |
POINT Z | x | x |
POINT M | x | x[2] |
POINT ZM | x[1][2] | |
LINESTRING | x | x |
LINESTRING Z | x | x |
LINESTRING M | x | x[2] |
LINESTRING ZM | x[1][2] | |
POLYGON | x | x |
POLYGON Z | x | x |
POLYGON M | x | x[2] |
POLYGON ZM | x[1][2] | |
MULTIPOINT | x | x |
MULTIPOINT Z | x | x |
MULTIPOINT M | x | x[2] |
POMULTIPOINTINT ZM | x[1][2] | |
MULTILINESTRING | x | x |
MULTILINESTRING Z | x | x |
MULTILINESTRING M | x | x[2] |
MULTILINESTRING ZM | x[1][2] | |
MULTIPOLYGON | x | x |
MULTIPOLYGON Z | x | x |
MULTIPOLYGON M | x | x[2] |
MULTIPOLYGON ZM | x[1][2] | |
GEOMETRYCOLLECTION | x | x |
GEOMETRYCOLLECTION Z | x | x |
GEOMETRYCOLLECTION M | x | x[2] |
GEOMETRYCOLLECTION ZM | x[1][2] | x |
[1] Only Z parameter is captured and added as a third value in the Position value.
[2] M parameter isn't captured.
Delimited spatial data support
Delimited spatial data, such as comma-separated value files (CSV), often have columns that contain spatial data. For example, there could be columns that contain latitude and longitude information. In Well-Known Text format, there could be a column that contains spatial geometry data.
Spatial data column detection
When reading a delimited file that contains spatial data, the header is analyzed to determine which columns contain location fields. If the header contains type information, it's used to cast the cell values to the appropriate type. If no header is specified, the first row is analyzed to generate a header. When analyzing the first row, a check is executed to match column names with the following names in a case-insensitive way. The order of the names is the priority, in case two or more names exist in a file.
Latitude
latitude
lat
latdd
lat_dd
latitude83
latdecdeg
y
ycenter
point-y
Longitude
longitude
lon
lng
long
longdd
long_dd
longitude83
longdecdeg
x
xcenter
point-x
Elevation
elevation
elv
altitude
alt
z
Geography
The first row of data is scanned for strings that are in Well-Known Text format.
Delimited data column types
When scanning the header row, any type information that is in the column name is extracted and used to cast the cells in that column. Here's an example of a column name that has a type value: "ColumnName (typeName)". The following case-insensitive type names are supported:
Numbers
- edm.int64
- int
- long
- edm.double
- float
- double
- number
Booleans
- edm.boolean
- bool
- boolean
Dates
- edm.datetime
- date
- datetime
Geography
- edm.geography
- geography
Strings
- edm.string
- varchar
- text
- string
If no type information can be extracted from the header, and the dynamic typing option is enabled when reading, then each cell is individually analyzed to determine what data type it's best suited to be cast as.
Next steps
See the following articles for more code samples to add to your maps: