要素转 JSON (转换)

摘要

将要素转换为 Esri JSON 或 GeoJSON 格式。 要素的字段、几何和空间参考将转换为相应的 JSON 表示,并写入到扩展名为 .json.geojson 的文件中。

使用情况

  • 您可以启用格式设置以使输出文件中的 JSON 表示更具可读性。 通过空格、制表符和回车设置输出文件的格式,以提高其可读性。 经过格式设置的 JSON 可能会有助于应用程序的开发和测试。 但是,建议您不要将其用于生产应用程序,因为任何空格均不必要,且会为 JSON 解析程序所忽略。 此外,经过格式设置的 JSON 比其相应的 JSON 更具有意义,而且文件大小也比其相应的 JSON 表示大得多。 这会影响应用程序的性能。

  • 转换不支持要素的连接、关联和附件。

  • 要转换要素类或图层中的要素子集,请使用按属性选择图层按位置选择图层工具,并且在使用要素转 JSON 之前,请选择要转换的要素子集。

  • 使用输出至 GeoJSON 参数来创建符合 GeoJSON 规范.geojson 文件。 GeoJSON 规范不支持曲线几何;包含曲线的输入要素将在转换过程中被增密。

  • 当输出为 .geojson 文件时,您可以使用投影到 WGS84 参数将输入要素投影到 WGS84 坐标系,该坐标系是 GeoJSON 规范的标准。 如有必要,可应用默认地理变换。 如果未使用此参数,则输出 .geojson 文件将包含,可在某些应用程序中用于定义坐标系或坐标参考系的 crs 标签。 GeoJSON 规范并未完全支持此标签。

  • 该工具的输出仅包含输入中的可见属性字段。 要包含所有字段,您必须使其全部可见。 此外,可以使用使用字段别名参数以在输出中使用字段别名,而非字段名称。

  • 输出文件大小不能超过 4 GB。 如果输入数据过大,请相应减小。

参数

标注说明数据类型
输入要素

要转换为 JSON 格式的要素。

Feature Layer
输出 JSON

输出 .json.geojson 文件。

File
格式化的 JSON
(可选)

用于指定是否设置 JSON 的格式,以提高与 ArcGIS REST API 规范的 PJSON(Pretty JSON)格式相似的可读性。

  • 未选中 - 将不会设置要素的格式。 这是默认设置。
  • 选中 - 将按照 PJSON 规范设置要素的格式。

Boolean
包括 Z 值
(可选)

指定要素的 z 值是否将包含在 JSON 中。

  • 未选中 - Z 值不会包括在几何中,且 JSON 的 hasZ 属性也不会包括在内。 这是默认设置。
  • 选中 - Z 值将包括在几何中,且 JSON 的 hasZ 属性将设置为 True。

Boolean
包括 M 值
(可选)

指定要素的 m 值是否将包含在 JSON 中。

  • 未选中 - M 值不会包括在几何中,且 JSON 的 hasM 属性也不会包括在内。 这是默认设置。
  • 选中 - M 值将包括在几何中,且 JSON 的 hasM 属性将设置为 True。

Boolean
输出至 GeoJSON
(可选)

用于指定将以 GeoJSON 格式还是 Esri JSON 格式创建输出。

  • 未选中 - 将以 Esri JSON 格式创建输出(.json 文件)。 这是默认设置。
  • 选中 - 将以 GeoJSON 格式创建输出(.geojson 文件)。

Boolean
投影到 WGS84
(可选)

用于指定是否将输入要素投影到采用默认地理变换的 WGS84 地理坐标系。 该参数仅适用于输出为 GeoJSON 的情况。

  • 选中 - 将要素投影到 WGS84。
  • 未选中 - 不会将要素投影到 WGS84。 GeoJSON 将包含用于定义坐标系的 CRS 标签。 这是默认设置。

Boolean
使用字段别名
(可选)

指定输出文件是否将使用要素属性的字段别名。

  • 未选中 - 输出要素属性将不使用字段别名;它们将使用字段名称。 这是默认设置。
  • 选中 - 输出要素属性将使用字段别名。

Boolean

arcpy.conversion.FeaturesToJSON(in_features, out_json_file, {format_json}, {include_z_values}, {include_m_values}, {geoJSON}, {outputToWGS84}, {use_field_alias})
名称说明数据类型
in_features

要转换为 JSON 格式的要素。

Feature Layer
out_json_file

输出 .json.geojson 文件。

File
format_json
(可选)

用于指定是否设置 JSON 的格式,以提高与 ArcGIS REST API 规范的 PJSON(Pretty JSON)格式相似的可读性。

  • NOT_FORMATTED将不会设置要素的格式。 这是默认设置。
  • FORMATTED将按照 PJSON 规范设置要素的格式。
Boolean
include_z_values
(可选)

指定要素的 z 值是否将包含在 JSON 中。

  • NO_Z_VALUESZ 值不会包括在几何中,且 JSON 的 hasZ 属性也不会包括在内。 这是默认设置。
  • Z_VALUESZ 值将包括在几何中,且 JSON 的 hasZ 属性将设置为 True。
Boolean
include_m_values
(可选)

指定要素的 m 值是否将包含在 JSON 中。

  • NO_M_VALUESM 值不会包括在几何中,且 JSON 的 hasM 属性也不会包括在内。 这是默认设置。
  • M_VALUESM 值将包括在几何中,且 JSON 的 hasM 属性将设置为 True。
Boolean
geoJSON
(可选)

用于指定将以符合 GeoJSON 规范的 GeoJSON 格式还是以 Esri JSON 格式创建输出。

  • GEOJSON将以 GeoJSON 格式创建输出(.geojson 文件)。
  • NO_GEOJSON将以 Esri JSON 格式创建输出(.json 文件)。 这是默认设置。
Boolean
outputToWGS84
(可选)

用于指定是否将输入要素投影到采用默认地理变换的 WGS84 地理坐标系。 该参数仅适用于输出为 GeoJSON 的情况。

  • WGS84将要素投影到 WGS84。
  • KEEP_INPUT_SR不会将要素投影到 WGS84。 GeoJSON 将包含用于定义坐标系的 CRS 标签。 这是默认设置。
Boolean
use_field_alias
(可选)

指定输出文件是否将使用要素属性的字段别名。

  • USE_FIELD_NAME输出要素属性将不使用字段别名;它们将使用字段名称。 这是默认设置。
  • USE_FIELD_ALIAS输出要素属性将使用字段别名。
Boolean

代码示例

FeaturesToJSON 示例 1(Python 窗口)

以下 Python 窗口脚本演示了如何使用 FeaturesToJSON 函数创建 .json.pjson 文件。

import arcpy
import os

arcpy.env.workspace = "c:/data"
arcpy.conversion.FeaturesToJSON(os.path.join("outgdb.gdb", "myfeatures"), 
                                "myjsonfeatures.json")
arcpy.conversion.FeaturesToJSON(os.path.join("outgdb.gdb", "myfeatures"), 
                                "mypjsonfeatures.json", "FORMATTED")
FeaturesToJSON 示例 2(Python 窗口)

以下 Python 窗口脚本演示了如何通过 Z 值和 M 值使用 FeaturesToJSON 函数。

import arcpy
import os
arcpy.env.workspace = "c:/data"
arcpy.conversion.FeaturesToJSON(os.path.join("outgdb.gdb", "myfeatures"), 
                                "myjsonfeatures.json", "NOT_FORMATTED",	
                                "Z_VALUES", "M_VALUES")
FeaturesToJSON 示例 3(独立脚本)

首先使用 SelectLayerByLocationSelectLayerByAttribute 函数将要素子集转换为 JSON。

# Import system modules
import arcpy

# Set the workspace
arcpy.env.workspace = "c:/data/mexico.gdb"

# Make a layer from the feature class
arcpy.management.MakeFeatureLayer("cities", "cities_lyr") 
 
# Select all cities that overlap the chihuahua polygon
arcpy.management.SelectLayerByLocation("cities_lyr", "intersect", "chihuahua", 
                                       0, "new_selection")

# Within selected features, further select only those cities that have a 
# population > 10,000   
arcpy.management.SelectLayerByAttribute("cities_lyr", "SUBSET_SELECTION", 
                                        '"population" > 10000')
 
# Convert the selected features to JSON
arcpy.conversion.FeaturesToJSON("cities_lyr", r"c:\data\myjsonfeatures.json")

许可信息

  • Basic: 是
  • Standard: 是
  • Advanced: 是

相关主题