@itwin/map-layers-formats 4.5.0-dev.4 → 4.5.0-dev.40
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +56 -1
- package/lib/cjs/ArcGisFeature/ArcGisCanvasRenderer.js.map +1 -1
- package/lib/cjs/ArcGisFeature/ArcGisFeatureFormat.js.map +1 -1
- package/lib/cjs/ArcGisFeature/ArcGisFeatureProvider.d.ts.map +1 -1
- package/lib/cjs/ArcGisFeature/ArcGisFeatureProvider.js +7 -7
- package/lib/cjs/ArcGisFeature/ArcGisFeatureProvider.js.map +1 -1
- package/lib/cjs/ArcGisFeature/ArcGisFeatureQuery.js.map +1 -1
- package/lib/cjs/ArcGisFeature/ArcGisFeatureReader.js.map +1 -1
- package/lib/cjs/ArcGisFeature/ArcGisFeatureResponse.js.map +1 -1
- package/lib/cjs/ArcGisFeature/ArcGisJsonFeatureReader.js.map +1 -1
- package/lib/cjs/ArcGisFeature/ArcGisPbfFeatureReader.js.map +1 -1
- package/lib/cjs/ArcGisFeature/ArcGisSymbologyRenderer.d.ts +14 -1
- package/lib/cjs/ArcGisFeature/ArcGisSymbologyRenderer.d.ts.map +1 -1
- package/lib/cjs/ArcGisFeature/ArcGisSymbologyRenderer.js +57 -1
- package/lib/cjs/ArcGisFeature/ArcGisSymbologyRenderer.js.map +1 -1
- package/lib/cjs/ArcGisFeature/EsriSymbology.d.ts +46 -6
- package/lib/cjs/ArcGisFeature/EsriSymbology.d.ts.map +1 -1
- package/lib/cjs/ArcGisFeature/EsriSymbology.js +66 -1
- package/lib/cjs/ArcGisFeature/EsriSymbology.js.map +1 -1
- package/lib/cjs/ArcGisFeature/esriPBuffer.gen.js.map +1 -1
- package/lib/cjs/Tools/MapFeatureInfoDecorator.js.map +1 -1
- package/lib/cjs/Tools/MapFeatureInfoTool.js.map +1 -1
- package/lib/cjs/map-layers-formats.js.map +1 -1
- package/lib/cjs/mapLayersFormats.js.map +1 -1
- package/lib/esm/ArcGisFeature/ArcGisCanvasRenderer.js.map +1 -1
- package/lib/esm/ArcGisFeature/ArcGisFeatureFormat.js.map +1 -1
- package/lib/esm/ArcGisFeature/ArcGisFeatureProvider.d.ts.map +1 -1
- package/lib/esm/ArcGisFeature/ArcGisFeatureProvider.js +8 -8
- package/lib/esm/ArcGisFeature/ArcGisFeatureProvider.js.map +1 -1
- package/lib/esm/ArcGisFeature/ArcGisFeatureQuery.js.map +1 -1
- package/lib/esm/ArcGisFeature/ArcGisFeatureReader.js.map +1 -1
- package/lib/esm/ArcGisFeature/ArcGisFeatureResponse.js.map +1 -1
- package/lib/esm/ArcGisFeature/ArcGisJsonFeatureReader.js.map +1 -1
- package/lib/esm/ArcGisFeature/ArcGisPbfFeatureReader.js.map +1 -1
- package/lib/esm/ArcGisFeature/ArcGisSymbologyRenderer.d.ts +14 -1
- package/lib/esm/ArcGisFeature/ArcGisSymbologyRenderer.d.ts.map +1 -1
- package/lib/esm/ArcGisFeature/ArcGisSymbologyRenderer.js +55 -0
- package/lib/esm/ArcGisFeature/ArcGisSymbologyRenderer.js.map +1 -1
- package/lib/esm/ArcGisFeature/EsriSymbology.d.ts +46 -6
- package/lib/esm/ArcGisFeature/EsriSymbology.d.ts.map +1 -1
- package/lib/esm/ArcGisFeature/EsriSymbology.js +63 -0
- package/lib/esm/ArcGisFeature/EsriSymbology.js.map +1 -1
- package/lib/esm/ArcGisFeature/esriPBuffer.gen.js.map +1 -1
- package/lib/esm/Tools/MapFeatureInfoDecorator.js.map +1 -1
- package/lib/esm/Tools/MapFeatureInfoTool.js.map +1 -1
- package/lib/esm/map-layers-formats.js.map +1 -1
- package/lib/esm/mapLayersFormats.js.map +1 -1
- package/lib/public/locales/en/mapLayersFormats.json +11 -11
- package/package.json +12 -12
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ArcGisFeatureQuery.js","sourceRoot":"","sources":["../../../src/ArcGisFeature/ArcGisFeatureQuery.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\n/** @internal */\r\nexport type ArcGisFeatureResultType = \"none\" | \"standard\" | \"tile\";\r\n\r\n/** @internal */\r\nexport type ArcGisFeatureGeometryType =\r\n \"esriGeometryNull\"\r\n | \"esriGeometryPoint\"\r\n | \"esriGeometryMultipoint\"\r\n | \"esriGeometryLine\"\r\n | \"esriGeometryCircularArc\"\r\n | \"esriGeometryEllipticArc\"\r\n | \"esriGeometryBezier3Curve\"\r\n | \"esriGeometryPath\"\r\n | \"esriGeometryPolyline\"\r\n | \"esriGeometryRing\"\r\n | \"esriGeometryPolygon\"\r\n | \"esriGeometryEnvelope\"\r\n | \"esriGeometryAny\"\r\n | \"esriGeometryBag\"\r\n | \"esriGeometryMultiPatch\"\r\n | \"esriGeometryTriangleStrip\"\r\n | \"esriGeometryTriangeFan\"\r\n | \"esriGeometryRay\"\r\n | \"esriGeometrySphere\"\r\n | \"esriGeometryTriangles\";\r\n\r\n/** @internal */\r\nexport type ArcGisFeatureSpatialRel = \"esriSpatialRelIntersects\" | \"esriSpatialRelContains\" | \"esriSpatialRelCrosses\" | \"esriSpatialRelEnvelopeIntersects\" | \"esriSpatialRelIndexIntersects\" | \"esriSpatialRelOverlaps\" | \"esriSpatialRelTouches\" | \"esriSpatialRelWithin\";\r\n\r\n/** @internal */\r\nexport interface ArcGisGeometry {\r\n type: ArcGisFeatureGeometryType;\r\n geom: ArcGisExtent | ArcGisPointGeometry;\r\n}\r\n\r\n/** @internal */\r\nexport interface ArcGisSpatialReference {\r\n wkid: number;\r\n latestWkid: number;\r\n}\r\n\r\n/** @internal */\r\nexport interface ArcGisExtent {\r\n xmin: number;\r\n xmax: number;\r\n ymin: number;\r\n ymax: number;\r\n spatialReference: ArcGisSpatialReference;\r\n}\r\n\r\n/** @internal */\r\nexport interface ArcGisPointGeometry {\r\n x: number;\r\n y: number;\r\n spatialReference: ArcGisSpatialReference;\r\n}\r\n\r\n/** @internal */\r\nexport interface FeatureQueryQuantizationParams {\r\n extent: ArcGisExtent;\r\n mode: \"view\" | \"edit\";\r\n originPosition: \"upperLeft\" | \"lowerLeft\";\r\n tolerance: number;\r\n}\r\n\r\n/** @internal */\r\nexport type ArcGisFeatureFormat = \"JSON\" | \"PBF\";\r\n\r\n// Based on official documentation:\r\n// https://developers.arcgis.com/rest/services-reference/query-feature-service-layer-.htm\r\n/** @internal */\r\nexport interface ArcGisFeatureQueryParams {\r\n\r\n /** This option can be used for fetching query results up to the resultRecordCount specified.\r\n * When resultOffset is specified but this parameter is not, the map service defaults it to maxRecordCount.\r\n * The maximum value for this parameter is the value of the layer's maxRecordCount property.\r\n * The minimum value entered for this parameter cannot be below 1.\r\n * This parameter only applies if supportsPagination is true.\r\n * */\r\n resultRecordCount?: number;\r\n\r\n /** This option can be used for fetching query results up to the resultRecordCount specified.\r\n * When resultOffset is specified but this parameter is not, the map service defaults it to maxRecordCount.\r\n * The maximum value for this parameter is the value of the layer's maxRecordCount property.\r\n * The minimum value entered for this parameter cannot be below 1.\r\n * This parameter only applies if supportsPagination is true.\r\n * */\r\n resultOffset?: number;\r\n\r\n /** If true, the result includes the geometry associated with each feature returned. */\r\n returnGeometry?: boolean;\r\n geometry?: ArcGisGeometry;\r\n geometryType?: ArcGisFeatureGeometryType;\r\n spatialRel?: ArcGisFeatureSpatialRel;\r\n resultType?: ArcGisFeatureResultType;\r\n maxRecordCountFactor?: number;\r\n returnExceededLimitFeatures?: boolean;\r\n quantizationParameters?: FeatureQueryQuantizationParams;\r\n\r\n /** Maximum Allowable Offset means the map distance ( usually per pixel) within which two points are considered identical.\r\n * It is used to generalize thus reduce the number of points\r\n* */\r\n maxAllowableOffset?: number;\r\n\r\n /** The list of fields to be included in the returned result set. This list is a comma-delimited list of field names.\r\n * You can also specify the wildcard \"*\" as the value of this parameter.\r\n * */\r\n outFields?: string;\r\n\r\n /** The buffer distance for the input geometries.\r\n * */\r\n distance?: number;\r\n}\r\n\r\n/** @internal */\r\nexport class ArcGisFeatureQuery {\r\n public baseUrl: string;\r\n public layerIdx: number;\r\n public format: ArcGisFeatureFormat;\r\n public resultRecordCount?: number;\r\n public resultOffset?: number;\r\n public returnGeometry?: boolean;\r\n public geometry?: ArcGisGeometry;\r\n public spatialRel?: ArcGisFeatureSpatialRel;\r\n public resultType?: ArcGisFeatureResultType;\r\n public maxRecordCountFactor?: number;\r\n public returnExceededLimitFeatures?: boolean;\r\n public outSR: number;\r\n public outFields?: string;\r\n public distance?: number;\r\n public maxAllowableOffset?: number;\r\n\r\n // public envelopeFilter?: CartographicRange;\r\n public quantizationParams?: FeatureQueryQuantizationParams;\r\n\r\n // base url is expected ito be in the format of:\r\n // https://<hostname>/arcgis/rest/services/<ServiceName>/FeatureServer\r\n public constructor(baseUrl: string, layerIdx: number, format: ArcGisFeatureFormat, outSR: number, params?: ArcGisFeatureQueryParams) {\r\n this.baseUrl = baseUrl;\r\n this.layerIdx = layerIdx;\r\n this.format = format;\r\n this.outSR = outSR;\r\n\r\n if (params !== undefined) {\r\n this.resultRecordCount = params.resultRecordCount;\r\n this.resultOffset = params.resultOffset;\r\n this.returnGeometry = params.returnGeometry;\r\n this.geometry = params.geometry;\r\n this.spatialRel = params.spatialRel;\r\n this.resultType = params.resultType;\r\n this.maxRecordCountFactor = params.maxRecordCountFactor;\r\n this.returnExceededLimitFeatures = params.returnExceededLimitFeatures;\r\n this.quantizationParams = params.quantizationParameters;\r\n this.outFields = params.outFields;\r\n this.distance = params.distance;\r\n this.maxAllowableOffset = params.maxAllowableOffset;\r\n }\r\n\r\n }\r\n\r\n public toString() {\r\n const url = new URL(`${this.baseUrl}/${this.layerIdx}/query`);\r\n\r\n url.searchParams.append(\"f\", this.format);\r\n\r\n if ( this.resultRecordCount !== undefined) {\r\n url.searchParams.append(\"resultRecordCount\", `${this.resultRecordCount}`);\r\n }\r\n\r\n if ( this.resultOffset !== undefined) {\r\n url.searchParams.append( \"resultOffset\", `${this.resultOffset}`);\r\n }\r\n\r\n if ( this.returnGeometry !== undefined) {\r\n url.searchParams.append(\"returnGeometry\", this.returnGeometry?\"true\":\"false\");\r\n }\r\n\r\n if ( this.resultType !== undefined) {\r\n url.searchParams.append(\"resultType\", this.resultType);\r\n }\r\n\r\n if ( this.maxRecordCountFactor !== undefined) {\r\n url.searchParams.append( \"maxRecordCountFactor\", `${this.maxRecordCountFactor}`);\r\n }\r\n\r\n if ( this.returnExceededLimitFeatures !== undefined) {\r\n url.searchParams.append( \"returnExceededLimitFeatures\", this.returnExceededLimitFeatures?\"true\":\"false\");\r\n }\r\n\r\n url.searchParams.append( \"outSR\", `${this.outSR}`);\r\n\r\n if (this.geometry || this.spatialRel) {\r\n\r\n if (this.spatialRel) {\r\n url.searchParams.append( \"spatialRel\", this.spatialRel);\r\n }\r\n\r\n if (this.geometry) {\r\n url.searchParams.append( \"geometryType\", this.geometry.type);\r\n\r\n const geomStr = JSON.stringify(this.geometry.geom);\r\n url.searchParams.append( \"geometry\", geomStr);\r\n url.searchParams.append( \"units\", \"esriSRUnit_Meter\"); // required on older server for get feature info\r\n\r\n url.searchParams.append( \"inSR\", `${this.geometry.geom.spatialReference.wkid}`);\r\n }\r\n } else {\r\n // No custom params, fetch all geometries\r\n url.searchParams.append(\"where\", \"1=1\");\r\n }\r\n\r\n if (this.quantizationParams) {\r\n const quantizationParamsStr = JSON.stringify(this.quantizationParams);\r\n url.searchParams.append(\"quantizationParameters\", quantizationParamsStr);\r\n }\r\n\r\n if (this.outFields) {\r\n url.searchParams.append( \"outFields\", this.outFields);\r\n }\r\n\r\n if (this.distance) {\r\n url.searchParams.append(\"distance\", `${this.distance}`);\r\n }\r\n\r\n if (this.maxAllowableOffset) {\r\n url.searchParams.append(\"maxAllowableOffset\", `${this.maxAllowableOffset}`);\r\n }\r\n\r\n return url.toString();\r\n }\r\n\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"ArcGisFeatureQuery.js","sourceRoot":"","sources":["../../../src/ArcGisFeature/ArcGisFeatureQuery.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\n/** @internal */\nexport type ArcGisFeatureResultType = \"none\" | \"standard\" | \"tile\";\n\n/** @internal */\nexport type ArcGisFeatureGeometryType =\n \"esriGeometryNull\"\n | \"esriGeometryPoint\"\n | \"esriGeometryMultipoint\"\n | \"esriGeometryLine\"\n | \"esriGeometryCircularArc\"\n | \"esriGeometryEllipticArc\"\n | \"esriGeometryBezier3Curve\"\n | \"esriGeometryPath\"\n | \"esriGeometryPolyline\"\n | \"esriGeometryRing\"\n | \"esriGeometryPolygon\"\n | \"esriGeometryEnvelope\"\n | \"esriGeometryAny\"\n | \"esriGeometryBag\"\n | \"esriGeometryMultiPatch\"\n | \"esriGeometryTriangleStrip\"\n | \"esriGeometryTriangeFan\"\n | \"esriGeometryRay\"\n | \"esriGeometrySphere\"\n | \"esriGeometryTriangles\";\n\n/** @internal */\nexport type ArcGisFeatureSpatialRel = \"esriSpatialRelIntersects\" | \"esriSpatialRelContains\" | \"esriSpatialRelCrosses\" | \"esriSpatialRelEnvelopeIntersects\" | \"esriSpatialRelIndexIntersects\" | \"esriSpatialRelOverlaps\" | \"esriSpatialRelTouches\" | \"esriSpatialRelWithin\";\n\n/** @internal */\nexport interface ArcGisGeometry {\n type: ArcGisFeatureGeometryType;\n geom: ArcGisExtent | ArcGisPointGeometry;\n}\n\n/** @internal */\nexport interface ArcGisSpatialReference {\n wkid: number;\n latestWkid: number;\n}\n\n/** @internal */\nexport interface ArcGisExtent {\n xmin: number;\n xmax: number;\n ymin: number;\n ymax: number;\n spatialReference: ArcGisSpatialReference;\n}\n\n/** @internal */\nexport interface ArcGisPointGeometry {\n x: number;\n y: number;\n spatialReference: ArcGisSpatialReference;\n}\n\n/** @internal */\nexport interface FeatureQueryQuantizationParams {\n extent: ArcGisExtent;\n mode: \"view\" | \"edit\";\n originPosition: \"upperLeft\" | \"lowerLeft\";\n tolerance: number;\n}\n\n/** @internal */\nexport type ArcGisFeatureFormat = \"JSON\" | \"PBF\";\n\n// Based on official documentation:\n// https://developers.arcgis.com/rest/services-reference/query-feature-service-layer-.htm\n/** @internal */\nexport interface ArcGisFeatureQueryParams {\n\n /** This option can be used for fetching query results up to the resultRecordCount specified.\n * When resultOffset is specified but this parameter is not, the map service defaults it to maxRecordCount.\n * The maximum value for this parameter is the value of the layer's maxRecordCount property.\n * The minimum value entered for this parameter cannot be below 1.\n * This parameter only applies if supportsPagination is true.\n * */\n resultRecordCount?: number;\n\n /** This option can be used for fetching query results up to the resultRecordCount specified.\n * When resultOffset is specified but this parameter is not, the map service defaults it to maxRecordCount.\n * The maximum value for this parameter is the value of the layer's maxRecordCount property.\n * The minimum value entered for this parameter cannot be below 1.\n * This parameter only applies if supportsPagination is true.\n * */\n resultOffset?: number;\n\n /** If true, the result includes the geometry associated with each feature returned. */\n returnGeometry?: boolean;\n geometry?: ArcGisGeometry;\n geometryType?: ArcGisFeatureGeometryType;\n spatialRel?: ArcGisFeatureSpatialRel;\n resultType?: ArcGisFeatureResultType;\n maxRecordCountFactor?: number;\n returnExceededLimitFeatures?: boolean;\n quantizationParameters?: FeatureQueryQuantizationParams;\n\n /** Maximum Allowable Offset means the map distance ( usually per pixel) within which two points are considered identical.\n * It is used to generalize thus reduce the number of points\n* */\n maxAllowableOffset?: number;\n\n /** The list of fields to be included in the returned result set. This list is a comma-delimited list of field names.\n * You can also specify the wildcard \"*\" as the value of this parameter.\n * */\n outFields?: string;\n\n /** The buffer distance for the input geometries.\n * */\n distance?: number;\n}\n\n/** @internal */\nexport class ArcGisFeatureQuery {\n public baseUrl: string;\n public layerIdx: number;\n public format: ArcGisFeatureFormat;\n public resultRecordCount?: number;\n public resultOffset?: number;\n public returnGeometry?: boolean;\n public geometry?: ArcGisGeometry;\n public spatialRel?: ArcGisFeatureSpatialRel;\n public resultType?: ArcGisFeatureResultType;\n public maxRecordCountFactor?: number;\n public returnExceededLimitFeatures?: boolean;\n public outSR: number;\n public outFields?: string;\n public distance?: number;\n public maxAllowableOffset?: number;\n\n // public envelopeFilter?: CartographicRange;\n public quantizationParams?: FeatureQueryQuantizationParams;\n\n // base url is expected ito be in the format of:\n // https://<hostname>/arcgis/rest/services/<ServiceName>/FeatureServer\n public constructor(baseUrl: string, layerIdx: number, format: ArcGisFeatureFormat, outSR: number, params?: ArcGisFeatureQueryParams) {\n this.baseUrl = baseUrl;\n this.layerIdx = layerIdx;\n this.format = format;\n this.outSR = outSR;\n\n if (params !== undefined) {\n this.resultRecordCount = params.resultRecordCount;\n this.resultOffset = params.resultOffset;\n this.returnGeometry = params.returnGeometry;\n this.geometry = params.geometry;\n this.spatialRel = params.spatialRel;\n this.resultType = params.resultType;\n this.maxRecordCountFactor = params.maxRecordCountFactor;\n this.returnExceededLimitFeatures = params.returnExceededLimitFeatures;\n this.quantizationParams = params.quantizationParameters;\n this.outFields = params.outFields;\n this.distance = params.distance;\n this.maxAllowableOffset = params.maxAllowableOffset;\n }\n\n }\n\n public toString() {\n const url = new URL(`${this.baseUrl}/${this.layerIdx}/query`);\n\n url.searchParams.append(\"f\", this.format);\n\n if ( this.resultRecordCount !== undefined) {\n url.searchParams.append(\"resultRecordCount\", `${this.resultRecordCount}`);\n }\n\n if ( this.resultOffset !== undefined) {\n url.searchParams.append( \"resultOffset\", `${this.resultOffset}`);\n }\n\n if ( this.returnGeometry !== undefined) {\n url.searchParams.append(\"returnGeometry\", this.returnGeometry?\"true\":\"false\");\n }\n\n if ( this.resultType !== undefined) {\n url.searchParams.append(\"resultType\", this.resultType);\n }\n\n if ( this.maxRecordCountFactor !== undefined) {\n url.searchParams.append( \"maxRecordCountFactor\", `${this.maxRecordCountFactor}`);\n }\n\n if ( this.returnExceededLimitFeatures !== undefined) {\n url.searchParams.append( \"returnExceededLimitFeatures\", this.returnExceededLimitFeatures?\"true\":\"false\");\n }\n\n url.searchParams.append( \"outSR\", `${this.outSR}`);\n\n if (this.geometry || this.spatialRel) {\n\n if (this.spatialRel) {\n url.searchParams.append( \"spatialRel\", this.spatialRel);\n }\n\n if (this.geometry) {\n url.searchParams.append( \"geometryType\", this.geometry.type);\n\n const geomStr = JSON.stringify(this.geometry.geom);\n url.searchParams.append( \"geometry\", geomStr);\n url.searchParams.append( \"units\", \"esriSRUnit_Meter\"); // required on older server for get feature info\n\n url.searchParams.append( \"inSR\", `${this.geometry.geom.spatialReference.wkid}`);\n }\n } else {\n // No custom params, fetch all geometries\n url.searchParams.append(\"where\", \"1=1\");\n }\n\n if (this.quantizationParams) {\n const quantizationParamsStr = JSON.stringify(this.quantizationParams);\n url.searchParams.append(\"quantizationParameters\", quantizationParamsStr);\n }\n\n if (this.outFields) {\n url.searchParams.append( \"outFields\", this.outFields);\n }\n\n if (this.distance) {\n url.searchParams.append(\"distance\", `${this.distance}`);\n }\n\n if (this.maxAllowableOffset) {\n url.searchParams.append(\"maxAllowableOffset\", `${this.maxAllowableOffset}`);\n }\n\n return url.toString();\n }\n\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ArcGisFeatureReader.js","sourceRoot":"","sources":["../../../src/ArcGisFeature/ArcGisFeatureReader.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAE/F,OAAO,EAAc,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AActE;;GAEG;AACH,MAAM,OAAgB,uBAAuB;IAW3C,YAAmB,QAA+B,EAAE,aAAkB;QAPtE,kDAAkD;QAClD,mEAAmE;QAC5D,+BAA0B,GAAG,KAAK,CAAC;QAa/B,0BAAqB,GAAG,CAAC,KAAa,EAAE,EAAE;YACnD,OAAO,CAAC,IAAI,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;QACtG,CAAC,CAAC;QAEQ,oBAAe,GAAG,CAAC,QAA2B,EAAE,KAAiC,EAAE,EAAE;YAC7F,IAAI,KAAK,KAAK,SAAS,EAAE;gBACvB,OAAQ,EAAE,CAAC;aACZ;iBAAM,IAAK,QAAQ,KAAK,iBAAiB,CAAC,QAAQ,IAAI,IAAI,CAAC,0BAA0B,EAAE;gBACtF,OAAQ,KAAc,CAAC,WAAW,EAAE,CAAC;aACtC;iBAAM;gBACL,OAAO,GAAG,KAAK,EAAE,CAAC;aACnB;QACH,CAAC,CAAC;QAnBA,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;IACtC,CAAC;CAkBF","sourcesContent":["/*---------------------------------------------------------------------------------------------\
|
|
1
|
+
{"version":3,"file":"ArcGisFeatureReader.js","sourceRoot":"","sources":["../../../src/ArcGisFeature/ArcGisFeatureReader.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAE/F,OAAO,EAAc,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AActE;;GAEG;AACH,MAAM,OAAgB,uBAAuB;IAW3C,YAAmB,QAA+B,EAAE,aAAkB;QAPtE,kDAAkD;QAClD,mEAAmE;QAC5D,+BAA0B,GAAG,KAAK,CAAC;QAa/B,0BAAqB,GAAG,CAAC,KAAa,EAAE,EAAE;YACnD,OAAO,CAAC,IAAI,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;QACtG,CAAC,CAAC;QAEQ,oBAAe,GAAG,CAAC,QAA2B,EAAE,KAAiC,EAAE,EAAE;YAC7F,IAAI,KAAK,KAAK,SAAS,EAAE;gBACvB,OAAQ,EAAE,CAAC;aACZ;iBAAM,IAAK,QAAQ,KAAK,iBAAiB,CAAC,QAAQ,IAAI,IAAI,CAAC,0BAA0B,EAAE;gBACtF,OAAQ,KAAc,CAAC,WAAW,EAAE,CAAC;aACtC;iBAAM;gBACL,OAAO,GAAG,KAAK,EAAE,CAAC;aACnB;QACH,CAAC,CAAC;QAnBA,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;IACtC,CAAC;CAkBF","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\nimport { Primitives, StandardTypeNames } from \"@itwin/appui-abstract\";\nimport { ImageMapLayerSettings } from \"@itwin/core-common\";\nimport { ArcGisGeometryRenderer, ArcGisGraphicsRenderer, MapLayerFeatureInfo } from \"@itwin/core-frontend\";\nimport { ArcGisResponseData } from \"./ArcGisFeatureResponse\";\n\n/** Interface defining minimal implementation needed to create an ArcGIS geometry reader,\n * needed by the [[ArcGisFeatureProvider]].\n * @internal\n */\nexport interface ArcGisFeatureReader {\n readAndRender: (response: ArcGisResponseData, renderer: ArcGisGeometryRenderer) => Promise<void>;\n readFeatureInfo: (response: ArcGisResponseData, featureInfos: MapLayerFeatureInfo[], renderer: ArcGisGraphicsRenderer) => Promise<void>;\n}\n\n/** Internal implementation of [[ArcGisFeatureReader]]\n * @internal\n */\nexport abstract class ArcGisBaseFeatureReader implements ArcGisFeatureReader {\n // Optionally you can set the floating precision\n public floatPrecision: number|undefined;\n\n // Force display value of date to ISO 8601 format.\n // Turning this ON, will disable display value in end-user's locale\n public forceDateDisplayValueToIso = false;\n\n protected _settings: ImageMapLayerSettings;\n protected _layerMetadata: any;\n\n public constructor(settings: ImageMapLayerSettings, layerMetadata: any) {\n this._settings = settings;\n this._layerMetadata = layerMetadata;\n }\n\n public abstract readAndRender(response: ArcGisResponseData, renderer: ArcGisGeometryRenderer): Promise<void>;\n public abstract readFeatureInfo(response: ArcGisResponseData, featureInfos: MapLayerFeatureInfo[], renderer: ArcGisGraphicsRenderer): Promise<void>;\n\n protected toFixedWithoutPadding = (value: number) => {\n return (this.floatPrecision === undefined ? value : parseFloat(value.toFixed(this.floatPrecision)));\n };\n\n protected getDisplayValue = (typename: StandardTypeNames, value: Primitives.Value|undefined) => {\n if (value === undefined) {\n return \"\";\n } else if ( typename === StandardTypeNames.DateTime && this.forceDateDisplayValueToIso) {\n return (value as Date).toISOString();\n } else {\n return `${value}`;\n }\n };\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ArcGisFeatureResponse.js","sourceRoot":"","sources":["../../../src/ArcGisFeature/ArcGisFeatureResponse.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAG/F,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAwBhD,gBAAgB;AAChB,MAAM,OAAO,qBAAqB;IAMhC,YAAY,MAA2B,EAAG,QAA2B,EAAE,QAAuB;QAC5F,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAEM,KAAK,CAAC,eAAe;QAC1B,IAAI,IAAmB,CAAC;QACxB,IAAI;YACF,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC;YAC1C,IAAI,YAAY,KAAK,SAAS,IAAI,YAAY,CAAC,MAAM,KAAK,GAAG;gBAC3D,OAAO,SAAS,CAAC;YAEnB,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,EAAE;gBACzB,MAAM,SAAS,GAAe,IAAI,UAAU,CAAC,MAAM,YAAY,CAAC,WAAW,EAAE,CAAC,CAAC;gBAC/E,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC;oBACxC,OAAO,SAAS,CAAC;gBAEnB,IAAI,GAAG,WAAW,CAAC,wBAAwB,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;gBACnE,MAAM,UAAU,GAAG,IAA4C,CAAC;gBAChE,OAAO,EAAC,IAAI,EAAE,mBAAmB,EAAE,UAAU,EAAE,WAAW,EAAE,aAAa,EAAE,qBAAqB,EAAC,CAAC;aAEnG;iBAAM;gBACL,IAAI,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE,CAAC;gBACjC,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,IAAI,IAAI;oBACpC,OAAO,SAAS,CAAC;gBAEnB,OAAO,EAAC,IAAI,EAAE,mBAAmB,EAAE,IAAI,CAAC,qBAAqB,EAAC,CAAC;aAChE;SAEF;QAAC,OAAM,EAAE,EAAE;YACV,OAAO,SAAS,CAAC;SAClB;IACH,CAAC;CACF","sourcesContent":["/*---------------------------------------------------------------------------------------------\
|
|
1
|
+
{"version":3,"file":"ArcGisFeatureResponse.js","sourceRoot":"","sources":["../../../src/ArcGisFeature/ArcGisFeatureResponse.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAG/F,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAwBhD,gBAAgB;AAChB,MAAM,OAAO,qBAAqB;IAMhC,YAAY,MAA2B,EAAG,QAA2B,EAAE,QAAuB;QAC5F,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAEM,KAAK,CAAC,eAAe;QAC1B,IAAI,IAAmB,CAAC;QACxB,IAAI;YACF,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC;YAC1C,IAAI,YAAY,KAAK,SAAS,IAAI,YAAY,CAAC,MAAM,KAAK,GAAG;gBAC3D,OAAO,SAAS,CAAC;YAEnB,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,EAAE;gBACzB,MAAM,SAAS,GAAe,IAAI,UAAU,CAAC,MAAM,YAAY,CAAC,WAAW,EAAE,CAAC,CAAC;gBAC/E,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC;oBACxC,OAAO,SAAS,CAAC;gBAEnB,IAAI,GAAG,WAAW,CAAC,wBAAwB,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;gBACnE,MAAM,UAAU,GAAG,IAA4C,CAAC;gBAChE,OAAO,EAAC,IAAI,EAAE,mBAAmB,EAAE,UAAU,EAAE,WAAW,EAAE,aAAa,EAAE,qBAAqB,EAAC,CAAC;aAEnG;iBAAM;gBACL,IAAI,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE,CAAC;gBACjC,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,IAAI,IAAI;oBACpC,OAAO,SAAS,CAAC;gBAEnB,OAAO,EAAC,IAAI,EAAE,mBAAmB,EAAE,IAAI,CAAC,qBAAqB,EAAC,CAAC;aAChE;SAEF;QAAC,OAAM,EAAE,EAAE;YACV,OAAO,SAAS,CAAC;SAClB;IACH,CAAC;CACF","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\nimport { ArcGisExtent, ArcGisFeatureFormat } from \"./ArcGisFeatureQuery\";\nimport { esriPBuffer } from \"./esriPBuffer.gen\";\n\n/** @internal */\nexport interface ArcGisResponseData {\n data: any;\n exceedTransferLimit: boolean;\n}\n\n/** @internal */\nexport type ArcGisFieldType =\n \"esriFieldTypeInteger\"\n | \"esriFieldTypeSmallInteger\"\n | \"esriFieldTypeDouble\"\n | \"esriFieldTypeSingle\"\n | \"esriFieldTypeString\"\n | \"esriFieldTypeDate\"\n | \"esriFieldTypeGeometry\"\n | \"esriFieldTypeOID\"\n | \"esriFieldTypeBlob\"\n | \"esriFieldTypeGlobalID\"\n | \"esriFieldTypeRaster\"\n | \"esriFieldTypeGUID\"\n | \"esriFieldTypeXML\";\n\n/** @internal */\nexport class ArcGisFeatureResponse {\n public readonly format: ArcGisFeatureFormat;\n public readonly envelope: ArcGisExtent | undefined;\n\n private _response: Promise<Response>;\n\n constructor(format: ArcGisFeatureFormat, response: Promise<Response>, envelope?: ArcGisExtent) {\n this.format = format;\n this._response = response;\n this.envelope = envelope;\n }\n\n public async getResponseData(): Promise<ArcGisResponseData|undefined> {\n let data: any|undefined;\n try {\n const tileResponse = await this._response;\n if (tileResponse === undefined || tileResponse.status !== 200 )\n return undefined;\n\n if (this.format === \"PBF\") {\n const byteArray: Uint8Array = new Uint8Array(await tileResponse.arrayBuffer());\n if (!byteArray || (byteArray.length === 0))\n return undefined;\n\n data = esriPBuffer.FeatureCollectionPBuffer.deserialize(byteArray);\n const collection = data as esriPBuffer.FeatureCollectionPBuffer;\n return {data, exceedTransferLimit: collection?.queryResult?.featureResult?.exceededTransferLimit};\n\n } else {\n data = await tileResponse.json();\n if (data === undefined || data == null)\n return undefined;\n\n return {data, exceedTransferLimit: data.exceededTransferLimit};\n }\n\n } catch(_e) {\n return undefined;\n }\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ArcGisJsonFeatureReader.js","sourceRoot":"","sources":["../../../src/ArcGisFeature/ArcGisJsonFeatureReader.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\nimport { PrimitiveValue, PropertyValueFormat, StandardTypeNames } from \"@itwin/appui-abstract\";\r\nimport { ImageMapLayerSettings } from \"@itwin/core-common\";\r\nimport { ArcGisAttributeDrivenSymbology, ArcGisGeometryReaderJSON, ArcGisGeometryRenderer, ArcGisGraphicsRenderer, MapLayerFeature, MapLayerFeatureAttribute, MapLayerFeatureInfo, MapSubLayerFeatureInfo} from \"@itwin/core-frontend\";\r\nimport { Transform } from \"@itwin/core-geometry\";\r\nimport { ArcGisBaseFeatureReader } from \"./ArcGisFeatureReader\";\r\nimport { ArcGisFieldType, ArcGisResponseData } from \"./ArcGisFeatureResponse\";\r\n\r\n/** @internal */\r\nexport class ArcGisJsonFeatureReader extends ArcGisBaseFeatureReader {\r\n public transform: Transform | undefined;\r\n\r\n public constructor(settings: ImageMapLayerSettings, layerMetadata: any) {\r\n super(settings, layerMetadata);\r\n\r\n }\r\n\r\n private applySymbologyAttributes(attrSymbology: ArcGisAttributeDrivenSymbology, feature: any) {\r\n if (attrSymbology && feature) {\r\n const symbolFields = attrSymbology.rendererFields;\r\n if (symbolFields && symbolFields.length > 0 && feature.attributes) {\r\n const featureAttr: {[key: string]: any} = {};\r\n for (const [attrKey, attrValue] of Object.entries(feature.attributes))\r\n if (symbolFields.includes(attrKey)) {\r\n featureAttr[attrKey] = attrValue;\r\n }\r\n attrSymbology.setActiveFeatureAttributes(featureAttr);\r\n }\r\n }\r\n }\r\n\r\n public async readAndRender(response: ArcGisResponseData, renderer: ArcGisGeometryRenderer) {\r\n const responseObj = response.data;\r\n if (responseObj.geometryType) {\r\n const attrSymbology = renderer.attributeSymbology;\r\n\r\n const geomReader = new ArcGisGeometryReaderJSON(responseObj.geometryType, renderer, renderer.transform === undefined);\r\n\r\n for (const feature of responseObj.features) {\r\n if (attrSymbology) {\r\n // Read attributes if needed (attribute driven symbology)\r\n this.applySymbologyAttributes(attrSymbology, feature);\r\n }\r\n\r\n await geomReader.readGeometry(feature.geometry);\r\n }\r\n }\r\n }\r\n\r\n public async readFeatureInfo(response: ArcGisResponseData, featureInfos: MapLayerFeatureInfo[], renderer?: ArcGisGraphicsRenderer) {\r\n const responseObj = response.data;\r\n if (responseObj === undefined || !Array.isArray(responseObj.features))\r\n return;\r\n\r\n const layerInfo: MapLayerFeatureInfo = { layerName: this._settings.name };\r\n\r\n // Create a signature index for every field name / type.\r\n const fieldsType: { [key: string]: ArcGisFieldType } = {};\r\n for (const fieldInfo of responseObj.fields) {\r\n fieldsType[fieldInfo.name] = fieldInfo.type;\r\n }\r\n\r\n const getStandardTypeName = (fieldType: ArcGisFieldType) => {\r\n switch (fieldType) {\r\n case \"esriFieldTypeInteger\":\r\n case \"esriFieldTypeSmallInteger\":\r\n case \"esriFieldTypeOID\":\r\n return StandardTypeNames.Integer;\r\n case \"esriFieldTypeDouble\":\r\n return StandardTypeNames.Double;\r\n case \"esriFieldTypeSingle\":\r\n return StandardTypeNames.Float;\r\n case \"esriFieldTypeDate\":\r\n return StandardTypeNames.DateTime;\r\n default:\r\n return StandardTypeNames.String;\r\n }\r\n };\r\n\r\n const getRecordInfo = (fieldName: string, value: any): MapLayerFeatureAttribute => {\r\n const propertyValue: PrimitiveValue = {valueFormat: PropertyValueFormat.Primitive};\r\n\r\n if (value === null) {\r\n value = undefined;\r\n }\r\n\r\n const strValue = `${value}`;\r\n const fieldType = fieldsType[fieldName];\r\n switch (fieldType) {\r\n case \"esriFieldTypeInteger\":\r\n case \"esriFieldTypeSmallInteger\":\r\n case \"esriFieldTypeOID\":\r\n propertyValue.value = value as number;\r\n break;\r\n case \"esriFieldTypeDouble\":\r\n case \"esriFieldTypeSingle\":\r\n propertyValue.value = this.toFixedWithoutPadding(value);\r\n break;\r\n case \"esriFieldTypeDate\":\r\n propertyValue.value = new Date(value);\r\n break;\r\n default:\r\n if (value !== undefined)\r\n propertyValue.value = strValue;\r\n\r\n break;\r\n }\r\n\r\n const typename = getStandardTypeName(fieldType);\r\n propertyValue.displayValue = this.getDisplayValue(typename, propertyValue.value);\r\n\r\n return {value: propertyValue, property: { name: fieldName, displayLabel: fieldName, typename }};\r\n };\r\n\r\n let geomReader: ArcGisGeometryReaderJSON|undefined;\r\n if (renderer && responseObj?.geometryType) {\r\n geomReader = new ArcGisGeometryReaderJSON(responseObj.geometryType, renderer);\r\n }\r\n\r\n // Each feature response represent a single sub-layer, no need to check for existing entry.\r\n const subLayerInfo: MapSubLayerFeatureInfo = {\r\n subLayerName: this._layerMetadata.name,\r\n displayFieldName: this._layerMetadata.name,\r\n features: [],\r\n };\r\n\r\n // Read all features attributes / geometries\r\n for (const responseFeature of responseObj.features) {\r\n const feature: MapLayerFeature = {attributes: []};\r\n\r\n for (const [key, value] of Object.entries(responseFeature.attributes))\r\n feature.attributes?.push(getRecordInfo(key, value));\r\n\r\n if (geomReader) {\r\n await geomReader.readGeometry(responseFeature.geometry);\r\n const graphics = renderer!.moveGraphics();\r\n feature.geometries = graphics.map((graphic) => {\r\n return {graphic};\r\n });\r\n }\r\n subLayerInfo.features.push(feature);\r\n }\r\n\r\n if (layerInfo.subLayerInfos === undefined)\r\n layerInfo.subLayerInfos = [];\r\n layerInfo.subLayerInfos.push(subLayerInfo);\r\n\r\n featureInfos.push(layerInfo);\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"ArcGisJsonFeatureReader.js","sourceRoot":"","sources":["../../../src/ArcGisFeature/ArcGisJsonFeatureReader.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\nimport { PrimitiveValue, PropertyValueFormat, StandardTypeNames } from \"@itwin/appui-abstract\";\nimport { ImageMapLayerSettings } from \"@itwin/core-common\";\nimport { ArcGisAttributeDrivenSymbology, ArcGisGeometryReaderJSON, ArcGisGeometryRenderer, ArcGisGraphicsRenderer, MapLayerFeature, MapLayerFeatureAttribute, MapLayerFeatureInfo, MapSubLayerFeatureInfo} from \"@itwin/core-frontend\";\nimport { Transform } from \"@itwin/core-geometry\";\nimport { ArcGisBaseFeatureReader } from \"./ArcGisFeatureReader\";\nimport { ArcGisFieldType, ArcGisResponseData } from \"./ArcGisFeatureResponse\";\n\n/** @internal */\nexport class ArcGisJsonFeatureReader extends ArcGisBaseFeatureReader {\n public transform: Transform | undefined;\n\n public constructor(settings: ImageMapLayerSettings, layerMetadata: any) {\n super(settings, layerMetadata);\n\n }\n\n private applySymbologyAttributes(attrSymbology: ArcGisAttributeDrivenSymbology, feature: any) {\n if (attrSymbology && feature) {\n const symbolFields = attrSymbology.rendererFields;\n if (symbolFields && symbolFields.length > 0 && feature.attributes) {\n const featureAttr: {[key: string]: any} = {};\n for (const [attrKey, attrValue] of Object.entries(feature.attributes))\n if (symbolFields.includes(attrKey)) {\n featureAttr[attrKey] = attrValue;\n }\n attrSymbology.setActiveFeatureAttributes(featureAttr);\n }\n }\n }\n\n public async readAndRender(response: ArcGisResponseData, renderer: ArcGisGeometryRenderer) {\n const responseObj = response.data;\n if (responseObj.geometryType) {\n const attrSymbology = renderer.attributeSymbology;\n\n const geomReader = new ArcGisGeometryReaderJSON(responseObj.geometryType, renderer, renderer.transform === undefined);\n\n for (const feature of responseObj.features) {\n if (attrSymbology) {\n // Read attributes if needed (attribute driven symbology)\n this.applySymbologyAttributes(attrSymbology, feature);\n }\n\n await geomReader.readGeometry(feature.geometry);\n }\n }\n }\n\n public async readFeatureInfo(response: ArcGisResponseData, featureInfos: MapLayerFeatureInfo[], renderer?: ArcGisGraphicsRenderer) {\n const responseObj = response.data;\n if (responseObj === undefined || !Array.isArray(responseObj.features))\n return;\n\n const layerInfo: MapLayerFeatureInfo = { layerName: this._settings.name };\n\n // Create a signature index for every field name / type.\n const fieldsType: { [key: string]: ArcGisFieldType } = {};\n for (const fieldInfo of responseObj.fields) {\n fieldsType[fieldInfo.name] = fieldInfo.type;\n }\n\n const getStandardTypeName = (fieldType: ArcGisFieldType) => {\n switch (fieldType) {\n case \"esriFieldTypeInteger\":\n case \"esriFieldTypeSmallInteger\":\n case \"esriFieldTypeOID\":\n return StandardTypeNames.Integer;\n case \"esriFieldTypeDouble\":\n return StandardTypeNames.Double;\n case \"esriFieldTypeSingle\":\n return StandardTypeNames.Float;\n case \"esriFieldTypeDate\":\n return StandardTypeNames.DateTime;\n default:\n return StandardTypeNames.String;\n }\n };\n\n const getRecordInfo = (fieldName: string, value: any): MapLayerFeatureAttribute => {\n const propertyValue: PrimitiveValue = {valueFormat: PropertyValueFormat.Primitive};\n\n if (value === null) {\n value = undefined;\n }\n\n const strValue = `${value}`;\n const fieldType = fieldsType[fieldName];\n switch (fieldType) {\n case \"esriFieldTypeInteger\":\n case \"esriFieldTypeSmallInteger\":\n case \"esriFieldTypeOID\":\n propertyValue.value = value as number;\n break;\n case \"esriFieldTypeDouble\":\n case \"esriFieldTypeSingle\":\n propertyValue.value = this.toFixedWithoutPadding(value);\n break;\n case \"esriFieldTypeDate\":\n propertyValue.value = new Date(value);\n break;\n default:\n if (value !== undefined)\n propertyValue.value = strValue;\n\n break;\n }\n\n const typename = getStandardTypeName(fieldType);\n propertyValue.displayValue = this.getDisplayValue(typename, propertyValue.value);\n\n return {value: propertyValue, property: { name: fieldName, displayLabel: fieldName, typename }};\n };\n\n let geomReader: ArcGisGeometryReaderJSON|undefined;\n if (renderer && responseObj?.geometryType) {\n geomReader = new ArcGisGeometryReaderJSON(responseObj.geometryType, renderer);\n }\n\n // Each feature response represent a single sub-layer, no need to check for existing entry.\n const subLayerInfo: MapSubLayerFeatureInfo = {\n subLayerName: this._layerMetadata.name,\n displayFieldName: this._layerMetadata.name,\n features: [],\n };\n\n // Read all features attributes / geometries\n for (const responseFeature of responseObj.features) {\n const feature: MapLayerFeature = {attributes: []};\n\n for (const [key, value] of Object.entries(responseFeature.attributes))\n feature.attributes?.push(getRecordInfo(key, value));\n\n if (geomReader) {\n await geomReader.readGeometry(responseFeature.geometry);\n const graphics = renderer!.moveGraphics();\n feature.geometries = graphics.map((graphic) => {\n return {graphic};\n });\n }\n subLayerInfo.features.push(feature);\n }\n\n if (layerInfo.subLayerInfos === undefined)\n layerInfo.subLayerInfos = [];\n layerInfo.subLayerInfos.push(subLayerInfo);\n\n featureInfos.push(layerInfo);\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ArcGisPbfFeatureReader.js","sourceRoot":"","sources":["../../../src/ArcGisFeature/ArcGisPbfFeatureReader.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\nimport { esriPBuffer } from \"../ArcGisFeature/esriPBuffer.gen\";\r\nimport { ArcGisAttributeDrivenSymbology, ArcGisGeometryRenderer, ArcGisGraphicsRenderer, MapLayerFeature, MapLayerFeatureAttribute, MapLayerFeatureInfo, MapSubLayerFeatureInfo} from \"@itwin/core-frontend\";\r\nimport { PrimitiveValue, PropertyValueFormat, StandardTypeNames } from \"@itwin/appui-abstract\";\r\nimport { ImageMapLayerSettings } from \"@itwin/core-common\";\r\nimport { ArcGisBaseFeatureReader } from \"./ArcGisFeatureReader\";\r\nimport { ArcGisResponseData } from \"./ArcGisFeatureResponse\";\r\nimport { Logger } from \"@itwin/core-bentley\";\r\nimport { ArcGisFeatureGeometryType } from \"./ArcGisFeatureQuery\";\r\n\r\nconst esriGeometryType = esriPBuffer.FeatureCollectionPBuffer.GeometryType;\r\nconst loggerCategory = \"MapLayersFormats.ArcGISFeature\";\r\n\r\ninterface PbfFieldInfo {\r\n name: string;\r\n type: esriPBuffer.FeatureCollectionPBuffer.FieldType;\r\n}\r\n\r\n/** @internal */\r\nexport class ArcGisPbfFeatureReader extends ArcGisBaseFeatureReader {\r\n public constructor(settings: ImageMapLayerSettings, layerMetadata: any) {\r\n super(settings, layerMetadata);\r\n }\r\n\r\n public static getArcGisFeatureGeometryType(geomType: esriPBuffer.FeatureCollectionPBuffer.GeometryType): ArcGisFeatureGeometryType {\r\n switch (geomType) {\r\n case esriPBuffer.FeatureCollectionPBuffer.GeometryType.esriGeometryTypeMultipatch:\r\n return \"esriGeometryMultiPatch\";\r\n case esriPBuffer.FeatureCollectionPBuffer.GeometryType.esriGeometryTypeMultipoint:\r\n return \"esriGeometryMultipoint\";\r\n case esriPBuffer.FeatureCollectionPBuffer.GeometryType.esriGeometryTypePoint:\r\n return \"esriGeometryPoint\";\r\n case esriPBuffer.FeatureCollectionPBuffer.GeometryType.esriGeometryTypePolygon:\r\n return \"esriGeometryPolygon\";\r\n case esriPBuffer.FeatureCollectionPBuffer.GeometryType.esriGeometryTypePolyline:\r\n return \"esriGeometryPolyline\";\r\n default:\r\n return \"esriGeometryNull\";\r\n }\r\n }\r\n\r\n private getNumericValue(attrValue: esriPBuffer.FeatureCollectionPBuffer.Value) {\r\n const propertyValue: PrimitiveValue = { valueFormat: PropertyValueFormat.Primitive };\r\n let typename = StandardTypeNames.Number;\r\n if (attrValue.has_double_value) {\r\n const value = this.toFixedWithoutPadding(attrValue.double_value);\r\n propertyValue.value = value;\r\n typename = StandardTypeNames.Double;\r\n } else if (attrValue.has_float_value) {\r\n const value = this.toFixedWithoutPadding(attrValue.float_value);\r\n propertyValue.value = value;\r\n typename = StandardTypeNames.Float;\r\n } else if (attrValue.has_int64_value) {\r\n propertyValue.value = attrValue.int64_value;\r\n typename = StandardTypeNames.Integer;\r\n } else if (attrValue.has_sint64_value) {\r\n propertyValue.value = attrValue.sint64_value;\r\n typename = StandardTypeNames.Integer;\r\n } else if (attrValue.has_sint_value) {\r\n propertyValue.value = attrValue.sint_value;\r\n typename = StandardTypeNames.Integer;\r\n } else if (attrValue.has_uint64_value) {\r\n propertyValue.value = attrValue.uint64_value;\r\n typename = StandardTypeNames.Integer;\r\n } else if (attrValue.has_uint_value) {\r\n propertyValue.value = attrValue.uint_value;\r\n typename = StandardTypeNames.Integer;\r\n } else {\r\n propertyValue.value = undefined;\r\n }\r\n\r\n return { propertyValue, typename };\r\n }\r\n\r\n public getFeatureAttribute(fieldInfo: PbfFieldInfo, attrValue: esriPBuffer.FeatureCollectionPBuffer.Value): MapLayerFeatureAttribute|undefined {\r\n let propertyValue: PrimitiveValue = { valueFormat: PropertyValueFormat.Primitive };\r\n\r\n let typename = StandardTypeNames.String;\r\n if (fieldInfo.type === esriPBuffer.FeatureCollectionPBuffer.FieldType.esriFieldTypeDouble\r\n || fieldInfo.type === esriPBuffer.FeatureCollectionPBuffer.FieldType.esriFieldTypeInteger\r\n || fieldInfo.type === esriPBuffer.FeatureCollectionPBuffer.FieldType.esriFieldTypeSmallInteger\r\n || fieldInfo.type === esriPBuffer.FeatureCollectionPBuffer.FieldType.esriFieldTypeOID\r\n || fieldInfo.type === esriPBuffer.FeatureCollectionPBuffer.FieldType.esriFieldTypeSingle\r\n || fieldInfo.type === esriPBuffer.FeatureCollectionPBuffer.FieldType.esriFieldTypeDate\r\n ) {\r\n const value = this.getNumericValue(attrValue);\r\n if (value.propertyValue === undefined) {\r\n Logger.logError(loggerCategory, `Could not read numeric value for field ${fieldInfo.name}`);\r\n return undefined;\r\n }\r\n\r\n if (fieldInfo.type === esriPBuffer.FeatureCollectionPBuffer.FieldType.esriFieldTypeDate) {\r\n const test = (value.propertyValue.value as unknown) as number;\r\n propertyValue.value = new Date(test);\r\n typename = StandardTypeNames.DateTime;\r\n } else {\r\n typename = value.typename;\r\n propertyValue = value.propertyValue;\r\n }\r\n } else if (fieldInfo.type === esriPBuffer.FeatureCollectionPBuffer.FieldType.esriFieldTypeString) {\r\n if (attrValue.has_string_value) {\r\n propertyValue.value = attrValue.string_value;\r\n typename = StandardTypeNames.String;\r\n }\r\n } else if (fieldInfo.type === esriPBuffer.FeatureCollectionPBuffer.FieldType.esriFieldTypeGlobalID) {\r\n if (attrValue.has_string_value) {\r\n propertyValue.value = attrValue.string_value;\r\n typename = StandardTypeNames.String;\r\n } else {\r\n const value = this.getNumericValue(attrValue);\r\n if (value.propertyValue === undefined) {\r\n Logger.logError(loggerCategory, `Could not read GlobalId value for field ${fieldInfo.name}`);\r\n return undefined;\r\n }\r\n }\r\n } else if (attrValue.has_string_value) {\r\n // If we reach this case that probably mean we don't support the field type, simply try to output string value\r\n typename = StandardTypeNames.String;\r\n propertyValue.value = attrValue.string_value;\r\n } else if (attrValue.value_type === \"none\") {\r\n // Sometimes fields are just empty, use an empty string\r\n typename = StandardTypeNames.String;\r\n propertyValue.value = undefined;\r\n } else {\r\n Logger.logError(loggerCategory, `Could not read value for field ${fieldInfo.name}`);\r\n return undefined;\r\n }\r\n\r\n propertyValue.displayValue = this.getDisplayValue(typename, propertyValue.value);\r\n\r\n return {value: propertyValue, property: { name: fieldInfo.name, displayLabel: fieldInfo.name, typename } };\r\n }\r\n\r\n public async readAndRender(response: ArcGisResponseData, renderer: ArcGisGeometryRenderer) {\r\n if (!(response.data instanceof esriPBuffer.FeatureCollectionPBuffer)) {\r\n const msg = \"Response was not in PBF format\";\r\n Logger.logError(loggerCategory, msg);\r\n return;\r\n }\r\n\r\n const collection = response.data;\r\n if (!collection.has_queryResult || !collection.queryResult.has_featureResult || collection?.queryResult?.featureResult?.features === undefined)\r\n return;\r\n\r\n const attrSymbology = renderer.attributeSymbology;\r\n\r\n // Fields metadata is stored outside feature results, create dedicated array first\r\n const fields: PbfFieldInfo[] = [];\r\n for (const field of collection.queryResult.featureResult.fields)\r\n fields.push({name: field.name, type:field.fieldType});\r\n\r\n const geomType = collection.queryResult.featureResult.geometryType;\r\n const stride = (collection.queryResult.featureResult.hasM || collection.queryResult.featureResult.hasZ) ? 3 : 2;\r\n const relativeCoords = renderer.transform === undefined;\r\n for (const feature of collection.queryResult.featureResult.features) {\r\n\r\n // Render geometries\r\n if (renderer && feature?.has_geometry) {\r\n\r\n if (attrSymbology) {\r\n // Read attributes if needed (attribute driven symbology)\r\n this.applySymbologyAttributes(attrSymbology, feature, fields);\r\n }\r\n\r\n if (geomType === esriGeometryType.esriGeometryTypePoint || geomType === esriGeometryType.esriGeometryTypeMultipoint) {\r\n await renderer.renderPoint(feature.geometry.lengths, feature.geometry.coords, stride, relativeCoords);\r\n } else if (geomType === esriGeometryType.esriGeometryTypePolyline || geomType === esriGeometryType.esriGeometryTypePolygon) {\r\n const fill = (geomType === esriGeometryType.esriGeometryTypePolygon);\r\n await renderer.renderPath(feature.geometry.lengths, feature.geometry.coords, fill, stride, relativeCoords);\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n private applySymbologyAttributes(attrSymbology: ArcGisAttributeDrivenSymbology, feature: esriPBuffer.FeatureCollectionPBuffer.Feature, fields: PbfFieldInfo[]) {\r\n if (attrSymbology) {\r\n const symbolFields = attrSymbology.rendererFields;\r\n if (symbolFields && symbolFields.length > 0 && feature.attributes) {\r\n let fieldIdx = 0;\r\n const featureAttr: {[key: string]: any} = {};\r\n for (const attrValue of feature.attributes) {\r\n if (fieldIdx > fields.length) {\r\n Logger.logError(loggerCategory, \"Error while read feature info data: fields metadata missing\");\r\n break;\r\n }\r\n const fieldInfo = fields[fieldIdx++];\r\n if (symbolFields.includes(fieldInfo.name)) {\r\n const attr = this.getFeatureAttribute(fieldInfo, attrValue);\r\n if (attr) {\r\n const primitiveValue = attr.value as PrimitiveValue;\r\n featureAttr[fieldInfo.name] = primitiveValue.value;\r\n }\r\n }\r\n\r\n }\r\n attrSymbology.setActiveFeatureAttributes(featureAttr);\r\n }\r\n }\r\n }\r\n\r\n public async readFeatureInfo(response: ArcGisResponseData, featureInfos: MapLayerFeatureInfo[], renderer?: ArcGisGraphicsRenderer) {\r\n if (!(response.data instanceof esriPBuffer.FeatureCollectionPBuffer)) {\r\n\r\n Logger.logError(loggerCategory, \"Response was not in PBF format\");\r\n }\r\n\r\n const collection = response.data as esriPBuffer.FeatureCollectionPBuffer;\r\n if (!collection.has_queryResult || !collection.queryResult.has_featureResult || collection?.queryResult?.featureResult?.features === undefined)\r\n return;\r\n\r\n const layerInfo: MapLayerFeatureInfo = { layerName: this._settings.name, subLayerInfos: [] };\r\n\r\n // Fields metadata is stored outside feature results, create dedicated array first\r\n const fields: PbfFieldInfo[] = [];\r\n for (const field of collection.queryResult.featureResult.fields)\r\n fields.push({name: field.name, type:field.fieldType});\r\n\r\n const geomType = collection.queryResult.featureResult.geometryType;\r\n const stride = (collection.queryResult.featureResult.hasM || collection.queryResult.featureResult.hasZ) ? 3 : 2;\r\n\r\n const subLayerInfo: MapSubLayerFeatureInfo = {\r\n subLayerName: this._layerMetadata.name,\r\n displayFieldName: this._layerMetadata.name,\r\n features: [],\r\n };\r\n\r\n // Read feature values\r\n for (const featureResponse of collection.queryResult.featureResult.features) {\r\n const feature: MapLayerFeature = { attributes: []};\r\n\r\n if (renderer && featureResponse?.has_geometry) {\r\n if (geomType === esriGeometryType.esriGeometryTypePoint || geomType === esriGeometryType.esriGeometryTypeMultipoint) {\r\n await renderer.renderPoint(featureResponse.geometry.lengths, featureResponse.geometry.coords, stride, true);\r\n } else if (geomType === esriGeometryType.esriGeometryTypePolyline || geomType === esriGeometryType.esriGeometryTypePolygon) {\r\n const fill = (geomType === esriGeometryType.esriGeometryTypePolygon);\r\n await renderer.renderPath(featureResponse.geometry.lengths, featureResponse.geometry.coords, fill, stride, true);\r\n }\r\n const graphics = renderer.moveGraphics();\r\n feature.geometries = graphics.map((graphic) => {\r\n return {graphic};\r\n });\r\n }\r\n\r\n let fieldIdx = 0;\r\n for (const attrValue of featureResponse.attributes) {\r\n if (fieldIdx > fields.length) {\r\n Logger.logError(loggerCategory, \"Error while read feature info data: fields metadata missing\");\r\n break;\r\n }\r\n // Convert everything to string for now\r\n const attr = this.getFeatureAttribute(fields[fieldIdx], attrValue);\r\n if (attr) {\r\n feature.attributes?.push(attr);\r\n }\r\n\r\n fieldIdx++;\r\n }\r\n subLayerInfo.features.push(feature);\r\n }\r\n\r\n if (layerInfo.subLayerInfos === undefined) {\r\n layerInfo.subLayerInfos = [];\r\n }\r\n layerInfo.subLayerInfos.push(subLayerInfo);\r\n featureInfos.push(layerInfo);\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"ArcGisPbfFeatureReader.js","sourceRoot":"","sources":["../../../src/ArcGisFeature/ArcGisPbfFeatureReader.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\nimport { esriPBuffer } from \"../ArcGisFeature/esriPBuffer.gen\";\nimport { ArcGisAttributeDrivenSymbology, ArcGisGeometryRenderer, ArcGisGraphicsRenderer, MapLayerFeature, MapLayerFeatureAttribute, MapLayerFeatureInfo, MapSubLayerFeatureInfo} from \"@itwin/core-frontend\";\nimport { PrimitiveValue, PropertyValueFormat, StandardTypeNames } from \"@itwin/appui-abstract\";\nimport { ImageMapLayerSettings } from \"@itwin/core-common\";\nimport { ArcGisBaseFeatureReader } from \"./ArcGisFeatureReader\";\nimport { ArcGisResponseData } from \"./ArcGisFeatureResponse\";\nimport { Logger } from \"@itwin/core-bentley\";\nimport { ArcGisFeatureGeometryType } from \"./ArcGisFeatureQuery\";\n\nconst esriGeometryType = esriPBuffer.FeatureCollectionPBuffer.GeometryType;\nconst loggerCategory = \"MapLayersFormats.ArcGISFeature\";\n\ninterface PbfFieldInfo {\n name: string;\n type: esriPBuffer.FeatureCollectionPBuffer.FieldType;\n}\n\n/** @internal */\nexport class ArcGisPbfFeatureReader extends ArcGisBaseFeatureReader {\n public constructor(settings: ImageMapLayerSettings, layerMetadata: any) {\n super(settings, layerMetadata);\n }\n\n public static getArcGisFeatureGeometryType(geomType: esriPBuffer.FeatureCollectionPBuffer.GeometryType): ArcGisFeatureGeometryType {\n switch (geomType) {\n case esriPBuffer.FeatureCollectionPBuffer.GeometryType.esriGeometryTypeMultipatch:\n return \"esriGeometryMultiPatch\";\n case esriPBuffer.FeatureCollectionPBuffer.GeometryType.esriGeometryTypeMultipoint:\n return \"esriGeometryMultipoint\";\n case esriPBuffer.FeatureCollectionPBuffer.GeometryType.esriGeometryTypePoint:\n return \"esriGeometryPoint\";\n case esriPBuffer.FeatureCollectionPBuffer.GeometryType.esriGeometryTypePolygon:\n return \"esriGeometryPolygon\";\n case esriPBuffer.FeatureCollectionPBuffer.GeometryType.esriGeometryTypePolyline:\n return \"esriGeometryPolyline\";\n default:\n return \"esriGeometryNull\";\n }\n }\n\n private getNumericValue(attrValue: esriPBuffer.FeatureCollectionPBuffer.Value) {\n const propertyValue: PrimitiveValue = { valueFormat: PropertyValueFormat.Primitive };\n let typename = StandardTypeNames.Number;\n if (attrValue.has_double_value) {\n const value = this.toFixedWithoutPadding(attrValue.double_value);\n propertyValue.value = value;\n typename = StandardTypeNames.Double;\n } else if (attrValue.has_float_value) {\n const value = this.toFixedWithoutPadding(attrValue.float_value);\n propertyValue.value = value;\n typename = StandardTypeNames.Float;\n } else if (attrValue.has_int64_value) {\n propertyValue.value = attrValue.int64_value;\n typename = StandardTypeNames.Integer;\n } else if (attrValue.has_sint64_value) {\n propertyValue.value = attrValue.sint64_value;\n typename = StandardTypeNames.Integer;\n } else if (attrValue.has_sint_value) {\n propertyValue.value = attrValue.sint_value;\n typename = StandardTypeNames.Integer;\n } else if (attrValue.has_uint64_value) {\n propertyValue.value = attrValue.uint64_value;\n typename = StandardTypeNames.Integer;\n } else if (attrValue.has_uint_value) {\n propertyValue.value = attrValue.uint_value;\n typename = StandardTypeNames.Integer;\n } else {\n propertyValue.value = undefined;\n }\n\n return { propertyValue, typename };\n }\n\n public getFeatureAttribute(fieldInfo: PbfFieldInfo, attrValue: esriPBuffer.FeatureCollectionPBuffer.Value): MapLayerFeatureAttribute|undefined {\n let propertyValue: PrimitiveValue = { valueFormat: PropertyValueFormat.Primitive };\n\n let typename = StandardTypeNames.String;\n if (fieldInfo.type === esriPBuffer.FeatureCollectionPBuffer.FieldType.esriFieldTypeDouble\n || fieldInfo.type === esriPBuffer.FeatureCollectionPBuffer.FieldType.esriFieldTypeInteger\n || fieldInfo.type === esriPBuffer.FeatureCollectionPBuffer.FieldType.esriFieldTypeSmallInteger\n || fieldInfo.type === esriPBuffer.FeatureCollectionPBuffer.FieldType.esriFieldTypeOID\n || fieldInfo.type === esriPBuffer.FeatureCollectionPBuffer.FieldType.esriFieldTypeSingle\n || fieldInfo.type === esriPBuffer.FeatureCollectionPBuffer.FieldType.esriFieldTypeDate\n ) {\n const value = this.getNumericValue(attrValue);\n if (value.propertyValue === undefined) {\n Logger.logError(loggerCategory, `Could not read numeric value for field ${fieldInfo.name}`);\n return undefined;\n }\n\n if (fieldInfo.type === esriPBuffer.FeatureCollectionPBuffer.FieldType.esriFieldTypeDate) {\n const test = (value.propertyValue.value as unknown) as number;\n propertyValue.value = new Date(test);\n typename = StandardTypeNames.DateTime;\n } else {\n typename = value.typename;\n propertyValue = value.propertyValue;\n }\n } else if (fieldInfo.type === esriPBuffer.FeatureCollectionPBuffer.FieldType.esriFieldTypeString) {\n if (attrValue.has_string_value) {\n propertyValue.value = attrValue.string_value;\n typename = StandardTypeNames.String;\n }\n } else if (fieldInfo.type === esriPBuffer.FeatureCollectionPBuffer.FieldType.esriFieldTypeGlobalID) {\n if (attrValue.has_string_value) {\n propertyValue.value = attrValue.string_value;\n typename = StandardTypeNames.String;\n } else {\n const value = this.getNumericValue(attrValue);\n if (value.propertyValue === undefined) {\n Logger.logError(loggerCategory, `Could not read GlobalId value for field ${fieldInfo.name}`);\n return undefined;\n }\n }\n } else if (attrValue.has_string_value) {\n // If we reach this case that probably mean we don't support the field type, simply try to output string value\n typename = StandardTypeNames.String;\n propertyValue.value = attrValue.string_value;\n } else if (attrValue.value_type === \"none\") {\n // Sometimes fields are just empty, use an empty string\n typename = StandardTypeNames.String;\n propertyValue.value = undefined;\n } else {\n Logger.logError(loggerCategory, `Could not read value for field ${fieldInfo.name}`);\n return undefined;\n }\n\n propertyValue.displayValue = this.getDisplayValue(typename, propertyValue.value);\n\n return {value: propertyValue, property: { name: fieldInfo.name, displayLabel: fieldInfo.name, typename } };\n }\n\n public async readAndRender(response: ArcGisResponseData, renderer: ArcGisGeometryRenderer) {\n if (!(response.data instanceof esriPBuffer.FeatureCollectionPBuffer)) {\n const msg = \"Response was not in PBF format\";\n Logger.logError(loggerCategory, msg);\n return;\n }\n\n const collection = response.data;\n if (!collection.has_queryResult || !collection.queryResult.has_featureResult || collection?.queryResult?.featureResult?.features === undefined)\n return;\n\n const attrSymbology = renderer.attributeSymbology;\n\n // Fields metadata is stored outside feature results, create dedicated array first\n const fields: PbfFieldInfo[] = [];\n for (const field of collection.queryResult.featureResult.fields)\n fields.push({name: field.name, type:field.fieldType});\n\n const geomType = collection.queryResult.featureResult.geometryType;\n const stride = (collection.queryResult.featureResult.hasM || collection.queryResult.featureResult.hasZ) ? 3 : 2;\n const relativeCoords = renderer.transform === undefined;\n for (const feature of collection.queryResult.featureResult.features) {\n\n // Render geometries\n if (renderer && feature?.has_geometry) {\n\n if (attrSymbology) {\n // Read attributes if needed (attribute driven symbology)\n this.applySymbologyAttributes(attrSymbology, feature, fields);\n }\n\n if (geomType === esriGeometryType.esriGeometryTypePoint || geomType === esriGeometryType.esriGeometryTypeMultipoint) {\n await renderer.renderPoint(feature.geometry.lengths, feature.geometry.coords, stride, relativeCoords);\n } else if (geomType === esriGeometryType.esriGeometryTypePolyline || geomType === esriGeometryType.esriGeometryTypePolygon) {\n const fill = (geomType === esriGeometryType.esriGeometryTypePolygon);\n await renderer.renderPath(feature.geometry.lengths, feature.geometry.coords, fill, stride, relativeCoords);\n }\n }\n\n }\n }\n\n private applySymbologyAttributes(attrSymbology: ArcGisAttributeDrivenSymbology, feature: esriPBuffer.FeatureCollectionPBuffer.Feature, fields: PbfFieldInfo[]) {\n if (attrSymbology) {\n const symbolFields = attrSymbology.rendererFields;\n if (symbolFields && symbolFields.length > 0 && feature.attributes) {\n let fieldIdx = 0;\n const featureAttr: {[key: string]: any} = {};\n for (const attrValue of feature.attributes) {\n if (fieldIdx > fields.length) {\n Logger.logError(loggerCategory, \"Error while read feature info data: fields metadata missing\");\n break;\n }\n const fieldInfo = fields[fieldIdx++];\n if (symbolFields.includes(fieldInfo.name)) {\n const attr = this.getFeatureAttribute(fieldInfo, attrValue);\n if (attr) {\n const primitiveValue = attr.value as PrimitiveValue;\n featureAttr[fieldInfo.name] = primitiveValue.value;\n }\n }\n\n }\n attrSymbology.setActiveFeatureAttributes(featureAttr);\n }\n }\n }\n\n public async readFeatureInfo(response: ArcGisResponseData, featureInfos: MapLayerFeatureInfo[], renderer?: ArcGisGraphicsRenderer) {\n if (!(response.data instanceof esriPBuffer.FeatureCollectionPBuffer)) {\n\n Logger.logError(loggerCategory, \"Response was not in PBF format\");\n }\n\n const collection = response.data as esriPBuffer.FeatureCollectionPBuffer;\n if (!collection.has_queryResult || !collection.queryResult.has_featureResult || collection?.queryResult?.featureResult?.features === undefined)\n return;\n\n const layerInfo: MapLayerFeatureInfo = { layerName: this._settings.name, subLayerInfos: [] };\n\n // Fields metadata is stored outside feature results, create dedicated array first\n const fields: PbfFieldInfo[] = [];\n for (const field of collection.queryResult.featureResult.fields)\n fields.push({name: field.name, type:field.fieldType});\n\n const geomType = collection.queryResult.featureResult.geometryType;\n const stride = (collection.queryResult.featureResult.hasM || collection.queryResult.featureResult.hasZ) ? 3 : 2;\n\n const subLayerInfo: MapSubLayerFeatureInfo = {\n subLayerName: this._layerMetadata.name,\n displayFieldName: this._layerMetadata.name,\n features: [],\n };\n\n // Read feature values\n for (const featureResponse of collection.queryResult.featureResult.features) {\n const feature: MapLayerFeature = { attributes: []};\n\n if (renderer && featureResponse?.has_geometry) {\n if (geomType === esriGeometryType.esriGeometryTypePoint || geomType === esriGeometryType.esriGeometryTypeMultipoint) {\n await renderer.renderPoint(featureResponse.geometry.lengths, featureResponse.geometry.coords, stride, true);\n } else if (geomType === esriGeometryType.esriGeometryTypePolyline || geomType === esriGeometryType.esriGeometryTypePolygon) {\n const fill = (geomType === esriGeometryType.esriGeometryTypePolygon);\n await renderer.renderPath(featureResponse.geometry.lengths, featureResponse.geometry.coords, fill, stride, true);\n }\n const graphics = renderer.moveGraphics();\n feature.geometries = graphics.map((graphic) => {\n return {graphic};\n });\n }\n\n let fieldIdx = 0;\n for (const attrValue of featureResponse.attributes) {\n if (fieldIdx > fields.length) {\n Logger.logError(loggerCategory, \"Error while read feature info data: fields metadata missing\");\n break;\n }\n // Convert everything to string for now\n const attr = this.getFeatureAttribute(fields[fieldIdx], attrValue);\n if (attr) {\n feature.attributes?.push(attr);\n }\n\n fieldIdx++;\n }\n subLayerInfo.features.push(feature);\n }\n\n if (layerInfo.subLayerInfos === undefined) {\n layerInfo.subLayerInfos = [];\n }\n layerInfo.subLayerInfos.push(subLayerInfo);\n featureInfos.push(layerInfo);\n }\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { EsriRenderer, EsriSMS, EsriSymbol, EsriUniqueValueRenderer } from "./EsriSymbology";
|
|
1
|
+
import { EsriClassBreaksRenderer, EsriRenderer, EsriSMS, EsriSymbol, EsriUniqueValueRenderer } from "./EsriSymbology";
|
|
2
2
|
import { ArcGisAttributeDrivenSymbology } from "@itwin/core-frontend";
|
|
3
3
|
/** @internal */
|
|
4
4
|
export type ArcGisSymbologyRendererType = "simple" | "attributeDriven";
|
|
@@ -73,4 +73,17 @@ export declare class ArcGisUniqueValueSymbologyRenderer extends ArcGisSimpleSymb
|
|
|
73
73
|
[key: string]: any;
|
|
74
74
|
}): void;
|
|
75
75
|
}
|
|
76
|
+
/** @internal */
|
|
77
|
+
export declare class ArcGisClassBreaksSymbologyRenderer extends ArcGisSimpleSymbologyRenderer implements ArcGisAttributeDrivenSymbology {
|
|
78
|
+
isAttributeDriven(): this is ArcGisAttributeDrivenSymbology;
|
|
79
|
+
protected _activeFeatureAttributes: {
|
|
80
|
+
[key: string]: any;
|
|
81
|
+
} | undefined;
|
|
82
|
+
protected cbRenderer: EsriClassBreaksRenderer;
|
|
83
|
+
get rendererFields(): string[] | undefined;
|
|
84
|
+
constructor(renderer: EsriClassBreaksRenderer, defaultSymbol: EsriSymbol);
|
|
85
|
+
setActiveFeatureAttributes(attributes: {
|
|
86
|
+
[key: string]: any;
|
|
87
|
+
}): void;
|
|
88
|
+
}
|
|
76
89
|
//# sourceMappingURL=ArcGisSymbologyRenderer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ArcGisSymbologyRenderer.d.ts","sourceRoot":"","sources":["../../../src/ArcGisFeature/ArcGisSymbologyRenderer.ts"],"names":[],"mappings":"AAOA,OAAO,EAAW,YAAY,EAAsD,OAAO,EAAE,UAAU,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"ArcGisSymbologyRenderer.d.ts","sourceRoot":"","sources":["../../../src/ArcGisFeature/ArcGisSymbologyRenderer.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,6 +13,9 @@ export class ArcGisSymbologyRenderer {
|
|
|
13
13
|
if (renderer?.type === "uniqueValue") {
|
|
14
14
|
return new ArcGisUniqueValueSymbologyRenderer(renderer, defaultSymbol);
|
|
15
15
|
}
|
|
16
|
+
else if (renderer?.type === "classBreaks") {
|
|
17
|
+
return new ArcGisClassBreaksSymbologyRenderer(renderer, defaultSymbol);
|
|
18
|
+
}
|
|
16
19
|
else {
|
|
17
20
|
return new ArcGisSimpleSymbologyRenderer(renderer, defaultSymbol);
|
|
18
21
|
}
|
|
@@ -322,4 +325,56 @@ export class ArcGisUniqueValueSymbologyRenderer extends ArcGisSimpleSymbologyRen
|
|
|
322
325
|
}
|
|
323
326
|
}
|
|
324
327
|
}
|
|
328
|
+
/** @internal */
|
|
329
|
+
export class ArcGisClassBreaksSymbologyRenderer extends ArcGisSimpleSymbologyRenderer {
|
|
330
|
+
isAttributeDriven() { return true; }
|
|
331
|
+
get rendererFields() {
|
|
332
|
+
if (this.cbRenderer)
|
|
333
|
+
return [this.cbRenderer.field];
|
|
334
|
+
else
|
|
335
|
+
return undefined;
|
|
336
|
+
}
|
|
337
|
+
constructor(renderer, defaultSymbol) {
|
|
338
|
+
super(renderer, defaultSymbol);
|
|
339
|
+
this.cbRenderer = this.renderer;
|
|
340
|
+
if (this.cbRenderer.defaultSymbol) {
|
|
341
|
+
this._defaultSymbol = this.cbRenderer.defaultSymbol;
|
|
342
|
+
this._symbol = this.defaultSymbol;
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
setActiveFeatureAttributes(attributes) {
|
|
346
|
+
this._activeFeatureAttributes = attributes;
|
|
347
|
+
const newSymbolApplied = false;
|
|
348
|
+
if (this._activeFeatureAttributes) {
|
|
349
|
+
if (Object.keys(this._activeFeatureAttributes).includes(this.cbRenderer.field)) {
|
|
350
|
+
const queryValue = this._activeFeatureAttributes[this.cbRenderer.field];
|
|
351
|
+
if (queryValue !== null && queryValue !== undefined) {
|
|
352
|
+
let currentMinValue;
|
|
353
|
+
let currentClassIdx = 0;
|
|
354
|
+
do {
|
|
355
|
+
const currentClass = this.cbRenderer.classBreakInfos[currentClassIdx];
|
|
356
|
+
if (currentClass.classMinValue !== undefined) {
|
|
357
|
+
currentMinValue = currentClass.classMinValue;
|
|
358
|
+
}
|
|
359
|
+
else if (currentClass.classMinValue === undefined && currentClassIdx > 0) {
|
|
360
|
+
currentMinValue = this.cbRenderer.classBreakInfos[currentClassIdx - 1].classMaxValue;
|
|
361
|
+
}
|
|
362
|
+
else {
|
|
363
|
+
currentMinValue = this.cbRenderer.minValue;
|
|
364
|
+
}
|
|
365
|
+
if (queryValue >= currentMinValue
|
|
366
|
+
&& queryValue <= currentClass.classMaxValue) {
|
|
367
|
+
this._symbol = currentClass.symbol;
|
|
368
|
+
return;
|
|
369
|
+
}
|
|
370
|
+
} while (++currentClassIdx < this.cbRenderer.classBreakInfos.length);
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
// Fallback to default symbology to make sure we render something
|
|
374
|
+
if (!newSymbolApplied) {
|
|
375
|
+
this._symbol = this.defaultSymbol;
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
}
|
|
325
380
|
//# sourceMappingURL=ArcGisSymbologyRenderer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ArcGisSymbologyRenderer.js","sourceRoot":"","sources":["../../../src/ArcGisFeature/ArcGisSymbologyRenderer.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\nimport { Logger } from \"@itwin/core-bentley\";\r\nimport { ColorDef } from \"@itwin/core-common\";\r\nimport { EsriPMS, EsriRenderer, EsriSFS, EsriSimpleRenderer, EsriSLS, EsriSLSStyle, EsriSMS, EsriSymbol, EsriUniqueValueRenderer } from \"./EsriSymbology\";\r\nimport { ArcGisAttributeDrivenSymbology } from \"@itwin/core-frontend\";\r\nimport { Angle } from \"@itwin/core-geometry\";\r\n\r\n/** @internal */\r\nconst loggerCategory = \"MapLayersFormats.ArcGISFeature\";\r\n\r\n/** @internal */\r\nexport type ArcGisSymbologyRendererType = \"simple\" | \"attributeDriven\";\r\n\r\n/** @internal */\r\nexport abstract class ArcGisSymbologyRenderer {\r\n public abstract isAttributeDriven(): this is ArcGisAttributeDrivenSymbology;\r\n public abstract applyFillStyle(context: CanvasRenderingContext2D): void;\r\n public abstract applyStrokeStyle(context: CanvasRenderingContext2D): void;\r\n public abstract drawPoint(context: CanvasRenderingContext2D, ptX: number, ptY: number): void;\r\n\r\n public static create(renderer: EsriRenderer|undefined, defaultSymbol: EsriSymbol) {\r\n if (renderer?.type === \"uniqueValue\") {\r\n return new ArcGisUniqueValueSymbologyRenderer(renderer as EsriUniqueValueRenderer, defaultSymbol);\r\n } else {\r\n return new ArcGisSimpleSymbologyRenderer(renderer, defaultSymbol);\r\n }\r\n }\r\n}\r\n/** @internal */\r\nexport class ArcGisDashLineStyle {\r\n // ESRI does not provide any values for their line style definition, those values have been\r\n // determined by pixel-peeping tiles rendered by ArcGIS servers.\r\n // Available line styles are documented here: https://developers.arcgis.com/web-map-specification/objects/esriSLS_symbol/\r\n private static _dashLineLength = 6;\r\n private static _dashGapLength = 3;\r\n private static _dashShortLineLength = 3;\r\n private static _dashShortGapLength = 3;\r\n private static _dashLongLineLength = 12;\r\n private static _dashLongLineDotDotLength = 18;\r\n private static _dashLongGapLength = 6;\r\n private static _dotLineLength = 2;\r\n private static _dotGapLength = 3;\r\n private static _shortDotLineLength = 1;\r\n private static _shortDotGapLength = 2;\r\n public static dashValues = {\r\n esriSLSDash : [this._dashLineLength, this._dashGapLength],\r\n esriSLSDashDot : [this._dashLineLength, this._dotGapLength, this._dotLineLength, this._dotGapLength],\r\n esriSLSDashDotDot : [this._dashLongLineLength, this._dotGapLength, this._dotLineLength, this._dotGapLength, this._dotLineLength, this._dotGapLength],\r\n esriSLSDot : [this._dashLineLength, this._dotGapLength],\r\n esriSLSLongDash : [this._dashLongLineLength, this._dashLongGapLength],\r\n esriSLSLongDashDot : [this._dashLongLineDotDotLength, this._dashGapLength, this._dotLineLength, this._dashGapLength],\r\n esriSLSShortDash : [this._dashShortLineLength, this._dashShortGapLength],\r\n esriSLSShortDashDot : [this._dashShortLineLength, this._dashShortGapLength, this._dotLineLength, this._dashShortGapLength],\r\n esriSLSShortDashDotDot : [this._dashLineLength, this._dashShortGapLength, this._dotLineLength, this._dashGapLength, this._dotLineLength, this._dashShortGapLength],\r\n esriSLSShortDot : [this._shortDotLineLength, this._shortDotGapLength],\r\n };\r\n\r\n}\r\n\r\n/** @internal */\r\nexport class ArcGisSimpleSymbologyRenderer extends ArcGisSymbologyRenderer {\r\n public override isAttributeDriven(): this is ArcGisAttributeDrivenSymbology {return false;}\r\n public lineWidthScaleFactor = 2; // This is value is empirical, this might need to be adjusted\r\n\r\n public get symbol() {return this._symbol;}\r\n public get defaultSymbol() {return this._defaultSymbol;}\r\n protected _symbol: EsriSymbol;\r\n protected _defaultSymbol: EsriSymbol;\r\n\r\n public readonly renderer?: EsriRenderer;\r\n\r\n public constructor(renderer: EsriRenderer|undefined, defaultSymbol: EsriSymbol) {\r\n super();\r\n this._defaultSymbol = defaultSymbol;\r\n this.renderer = renderer;\r\n\r\n if (this.renderer?.type === \"simple\") {\r\n this._symbol = (this.renderer as EsriSimpleRenderer).symbol;\r\n } else {\r\n this._symbol = defaultSymbol;\r\n }\r\n\r\n }\r\n\r\n public applyFillStyle(context: CanvasRenderingContext2D) {\r\n if (!context)\r\n return;\r\n\r\n const fillColor = this.getFillColor();\r\n if (fillColor) {\r\n context.fillStyle = fillColor.toRgbaString();\r\n } else {\r\n Logger.logTrace(loggerCategory, `Could not apply fill style`);\r\n }\r\n }\r\n\r\n private getFillColor() {\r\n let fillColor: ColorDef | undefined;\r\n if (this._symbol.type === \"esriSFS\") {\r\n const sfs = this._symbol as EsriSFS;\r\n if (sfs.color) {\r\n fillColor = sfs.color;\r\n }\r\n } else if (this._symbol.type === \"esriSMS\") {\r\n const sms = this._symbol as EsriSMS;\r\n if (sms.color) {\r\n fillColor = sms.color;\r\n }\r\n }\r\n\r\n return fillColor;\r\n }\r\n\r\n private applyLineDash(context: CanvasRenderingContext2D, slsStyle: EsriSLSStyle) {\r\n if (slsStyle !== \"esriSLSSolid\" && slsStyle !== \"esriSLSNull\") {\r\n context.setLineDash(ArcGisDashLineStyle.dashValues[slsStyle]);\r\n }\r\n }\r\n\r\n public applyStrokeStyle(context: CanvasRenderingContext2D) {\r\n if (!context)\r\n return;\r\n\r\n // Stroke style can be from SFS's outline style or a SLS's color\r\n let sls: EsriSLS | undefined;\r\n if (this._symbol.type === \"esriSFS\") {\r\n const sfs = this._symbol as EsriSFS;\r\n if (sfs.outline) {\r\n sls = sfs.outline;\r\n }\r\n } else if (this._symbol.type === \"esriSLS\") {\r\n sls = this._symbol as EsriSLS;\r\n } else if (this._symbol.type === \"esriSMS\") {\r\n const sms = this._symbol as EsriSMS;\r\n if (sms.outline) {\r\n sls = sms.outline;\r\n }\r\n }\r\n\r\n if (sls) {\r\n\r\n context.lineWidth = (sls.width > 0 ? sls.width : 1);\r\n if (this._symbol.type === \"esriSLS\")\r\n context.lineWidth *= this.lineWidthScaleFactor;\r\n if (sls.color) {\r\n context.strokeStyle = sls.color.toRgbaString();\r\n }\r\n if (sls.style) {\r\n this.applyLineDash(context, sls.style);\r\n }\r\n } else {\r\n Logger.logTrace(loggerCategory, `Could not apply stroke style`);\r\n }\r\n\r\n }\r\n /**\r\n * Draw a simple marker\r\n * @param x x-axis coordinate in the destination canvas at which to place the center of the marker\r\n * @param y y-axis coordinate in the destination canvas at which to place the center of the marker\r\n * @param size size of the marker\r\n * @public\r\n */\r\n public drawSimpleMarker(context: CanvasRenderingContext2D, sms: EsriSMS, x: number, y: number, size: number) {\r\n const halfSize = sms.size * 0.5;\r\n if (sms.angle) {\r\n context.save();\r\n context.translate(x,y);\r\n const angle = Angle.createDegrees(sms.angle);\r\n context.rotate(angle.radians);\r\n context.translate(-x,-y);\r\n }\r\n\r\n if (sms.style === \"esriSMSSquare\") {\r\n\r\n const dx = x + (-0.5 * size);\r\n const dy = y + (-0.5 * size);\r\n if (sms.color) {\r\n this.applyFillStyle(context);\r\n context.fillRect(dx, dy, size, size);\r\n }\r\n if (sms.outline) {\r\n this.applyStrokeStyle(context);\r\n context.strokeRect(dx, dy, size, size);\r\n }\r\n\r\n } else if (sms.style === \"esriSMSCircle\") {\r\n context.beginPath();\r\n context.arc(x, y, size*0.5, 0, 2*Math.PI);\r\n context.closePath();\r\n if (sms.color) {\r\n this.applyFillStyle(context);\r\n context.fill();\r\n }\r\n if (sms.outline) {\r\n this.applyStrokeStyle(context);\r\n context.stroke();\r\n }\r\n } else if (sms.style === \"esriSMSCross\") {\r\n context.beginPath();\r\n context.moveTo(x-halfSize, y);\r\n context.lineTo(x+halfSize, y);\r\n context.moveTo(x, y-halfSize);\r\n context.lineTo(x, y+halfSize);\r\n if (sms.outline) {\r\n this.applyStrokeStyle(context);\r\n }\r\n context.stroke();\r\n } else if (sms.style === \"esriSMSDiamond\") {\r\n context.beginPath();\r\n\r\n context.moveTo(x, y-halfSize);\r\n context.lineTo(x+halfSize, y);\r\n context.lineTo(x, y+halfSize);\r\n context.lineTo(x-halfSize, y);\r\n context.closePath();\r\n if (sms.color) {\r\n this.applyFillStyle(context);\r\n context.fill();\r\n }\r\n if (sms.outline) {\r\n this.applyStrokeStyle(context);\r\n }\r\n context.stroke();\r\n } else if (sms.style === \"esriSMSTriangle\") {\r\n context.beginPath();\r\n context.moveTo(x, y-halfSize);\r\n context.lineTo(x+halfSize, y+halfSize);\r\n context.lineTo(x-halfSize, y+halfSize);\r\n\r\n context.closePath();\r\n if (sms.color) {\r\n this.applyFillStyle(context);\r\n context.fill();\r\n }\r\n if (sms.outline) {\r\n this.applyStrokeStyle(context);\r\n }\r\n context.stroke();\r\n } else if(sms.style === \"esriSMSX\") {\r\n context.beginPath();\r\n context.moveTo(x-halfSize, y-halfSize);\r\n context.lineTo(x+halfSize, y+halfSize);\r\n context.moveTo(x-halfSize, y+halfSize);\r\n context.lineTo(x+halfSize, y-halfSize);\r\n if (sms.outline) {\r\n this.applyStrokeStyle(context);\r\n }\r\n context.stroke();\r\n }\r\n if (sms.angle)\r\n context.restore();\r\n }\r\n\r\n public drawPoint(context: CanvasRenderingContext2D, ptX: number, ptY: number) {\r\n if (!context)\r\n return;\r\n\r\n if (this._symbol.type === \"esriPMS\") {\r\n const pms = this._symbol as EsriPMS;\r\n const angleDegrees = pms.angle;\r\n\r\n // We scale up a little a bit the size of symbol.\r\n const width = pms.width === undefined ? pms.width : pms.width * 1.25;\r\n const height = pms.height === undefined ? pms.height : pms.height * 1.25;\r\n\r\n let xOffset = 0, yOffset = 0;\r\n\r\n // Center the marker around the anchor point\r\n if (width)\r\n xOffset = width * -0.5;\r\n if (height)\r\n yOffset = height * -0.5;\r\n\r\n // Add additional offset\r\n if (pms.xoffset)\r\n xOffset += pms.xoffset;\r\n if (pms.yoffset)\r\n yOffset += pms.yoffset;\r\n\r\n const dx = ptX + xOffset;\r\n const dy = ptY + yOffset;\r\n\r\n if (angleDegrees) {\r\n context.save();\r\n context.translate(ptX, ptY);\r\n const angle = Angle.createDegrees(angleDegrees);\r\n context.rotate(angle.radians);\r\n context.translate(-ptX, -ptY);\r\n }\r\n\r\n if (width && height) {\r\n context.drawImage(pms.image, dx, dy, width, height);\r\n } else {\r\n context.drawImage(pms.image, dx, dy);\r\n }\r\n\r\n if (angleDegrees)\r\n context.restore();\r\n\r\n } else if (this._symbol.type === \"esriSMS\") {\r\n const sms = this._symbol as EsriSMS;\r\n\r\n let xOffset = 0;\r\n let yOffset = 0;\r\n\r\n if (sms.xoffset)\r\n xOffset += sms.xoffset;\r\n\r\n if (sms.yoffset)\r\n yOffset += sms.yoffset;\r\n\r\n this.drawSimpleMarker(context, sms, ptX + xOffset, ptY + yOffset, sms.size);\r\n }\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class ArcGisUniqueValueSymbologyRenderer extends ArcGisSimpleSymbologyRenderer implements ArcGisAttributeDrivenSymbology {\r\n public override isAttributeDriven(): this is ArcGisAttributeDrivenSymbology {return true;}\r\n protected _activeFeatureAttributes: {[key: string]: any} | undefined;\r\n protected uvRenderer: EsriUniqueValueRenderer;\r\n\r\n public get rendererFields() {\r\n if (this.uvRenderer.field1)\r\n return [this.uvRenderer.field1];\r\n else\r\n return undefined;\r\n }\r\n\r\n public constructor(renderer: EsriUniqueValueRenderer, defaultSymbol: EsriSymbol) {\r\n super(renderer, defaultSymbol);\r\n\r\n this.uvRenderer = (this.renderer as EsriUniqueValueRenderer);\r\n if (this.uvRenderer.defaultSymbol) {\r\n this._defaultSymbol = this.uvRenderer.defaultSymbol;\r\n this._symbol = this.defaultSymbol;\r\n }\r\n }\r\n\r\n public setActiveFeatureAttributes(attributes: { [key: string]: any }) {\r\n this._activeFeatureAttributes = attributes;\r\n\r\n let newSymbolApplied = false;\r\n if (this._activeFeatureAttributes) {\r\n if (this.uvRenderer.field1 && Object.keys(this._activeFeatureAttributes).includes(this.uvRenderer.field1)) {\r\n\r\n const queryValue = this._activeFeatureAttributes[this.uvRenderer.field1];\r\n\r\n if (queryValue !== null && queryValue !== undefined) {\r\n for (const uvi of this.uvRenderer.uniqueValueInfos) {\r\n // Strangely, ArcGIS documentation says 'value' is a string,\r\n // not too sure if a comparison on other types is possible, or its always forced to string properties?\r\n if (uvi.value === queryValue.toString()) {\r\n this._symbol = uvi.symbol;\r\n newSymbolApplied = true;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Fallback to default symbology to make sure we render something\r\n if (!newSymbolApplied) {\r\n this._symbol = this.defaultSymbol;\r\n }\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"ArcGisSymbologyRenderer.js","sourceRoot":"","sources":["../../../src/ArcGisFeature/ArcGisSymbologyRenderer.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\nimport { Logger } from \"@itwin/core-bentley\";\nimport { ColorDef } from \"@itwin/core-common\";\nimport { EsriClassBreaksRenderer, EsriPMS, EsriRenderer, EsriSFS, EsriSimpleRenderer, EsriSLS, EsriSLSStyle, EsriSMS, EsriSymbol, EsriUniqueValueRenderer } from \"./EsriSymbology\";\nimport { ArcGisAttributeDrivenSymbology } from \"@itwin/core-frontend\";\nimport { Angle } from \"@itwin/core-geometry\";\n\n/** @internal */\nconst loggerCategory = \"MapLayersFormats.ArcGISFeature\";\n\n/** @internal */\nexport type ArcGisSymbologyRendererType = \"simple\" | \"attributeDriven\";\n\n/** @internal */\nexport abstract class ArcGisSymbologyRenderer {\n public abstract isAttributeDriven(): this is ArcGisAttributeDrivenSymbology;\n public abstract applyFillStyle(context: CanvasRenderingContext2D): void;\n public abstract applyStrokeStyle(context: CanvasRenderingContext2D): void;\n public abstract drawPoint(context: CanvasRenderingContext2D, ptX: number, ptY: number): void;\n\n public static create(renderer: EsriRenderer|undefined, defaultSymbol: EsriSymbol) {\n if (renderer?.type === \"uniqueValue\") {\n return new ArcGisUniqueValueSymbologyRenderer(renderer as EsriUniqueValueRenderer, defaultSymbol);\n } else if (renderer?.type === \"classBreaks\") {\n return new ArcGisClassBreaksSymbologyRenderer(renderer as EsriClassBreaksRenderer, defaultSymbol);\n } else {\n return new ArcGisSimpleSymbologyRenderer(renderer, defaultSymbol);\n }\n }\n}\n/** @internal */\nexport class ArcGisDashLineStyle {\n // ESRI does not provide any values for their line style definition, those values have been\n // determined by pixel-peeping tiles rendered by ArcGIS servers.\n // Available line styles are documented here: https://developers.arcgis.com/web-map-specification/objects/esriSLS_symbol/\n private static _dashLineLength = 6;\n private static _dashGapLength = 3;\n private static _dashShortLineLength = 3;\n private static _dashShortGapLength = 3;\n private static _dashLongLineLength = 12;\n private static _dashLongLineDotDotLength = 18;\n private static _dashLongGapLength = 6;\n private static _dotLineLength = 2;\n private static _dotGapLength = 3;\n private static _shortDotLineLength = 1;\n private static _shortDotGapLength = 2;\n public static dashValues = {\n esriSLSDash : [this._dashLineLength, this._dashGapLength],\n esriSLSDashDot : [this._dashLineLength, this._dotGapLength, this._dotLineLength, this._dotGapLength],\n esriSLSDashDotDot : [this._dashLongLineLength, this._dotGapLength, this._dotLineLength, this._dotGapLength, this._dotLineLength, this._dotGapLength],\n esriSLSDot : [this._dashLineLength, this._dotGapLength],\n esriSLSLongDash : [this._dashLongLineLength, this._dashLongGapLength],\n esriSLSLongDashDot : [this._dashLongLineDotDotLength, this._dashGapLength, this._dotLineLength, this._dashGapLength],\n esriSLSShortDash : [this._dashShortLineLength, this._dashShortGapLength],\n esriSLSShortDashDot : [this._dashShortLineLength, this._dashShortGapLength, this._dotLineLength, this._dashShortGapLength],\n esriSLSShortDashDotDot : [this._dashLineLength, this._dashShortGapLength, this._dotLineLength, this._dashGapLength, this._dotLineLength, this._dashShortGapLength],\n esriSLSShortDot : [this._shortDotLineLength, this._shortDotGapLength],\n };\n\n}\n\n/** @internal */\nexport class ArcGisSimpleSymbologyRenderer extends ArcGisSymbologyRenderer {\n public override isAttributeDriven(): this is ArcGisAttributeDrivenSymbology {return false;}\n public lineWidthScaleFactor = 2; // This is value is empirical, this might need to be adjusted\n\n public get symbol() {return this._symbol;}\n public get defaultSymbol() {return this._defaultSymbol;}\n protected _symbol: EsriSymbol;\n protected _defaultSymbol: EsriSymbol;\n\n public readonly renderer?: EsriRenderer;\n\n public constructor(renderer: EsriRenderer|undefined, defaultSymbol: EsriSymbol) {\n super();\n this._defaultSymbol = defaultSymbol;\n this.renderer = renderer;\n\n if (this.renderer?.type === \"simple\") {\n this._symbol = (this.renderer as EsriSimpleRenderer).symbol;\n } else {\n this._symbol = defaultSymbol;\n }\n\n }\n\n public applyFillStyle(context: CanvasRenderingContext2D) {\n if (!context)\n return;\n\n const fillColor = this.getFillColor();\n if (fillColor) {\n context.fillStyle = fillColor.toRgbaString();\n } else {\n Logger.logTrace(loggerCategory, `Could not apply fill style`);\n }\n }\n\n private getFillColor() {\n let fillColor: ColorDef | undefined;\n if (this._symbol.type === \"esriSFS\") {\n const sfs = this._symbol as EsriSFS;\n if (sfs.color) {\n fillColor = sfs.color;\n }\n } else if (this._symbol.type === \"esriSMS\") {\n const sms = this._symbol as EsriSMS;\n if (sms.color) {\n fillColor = sms.color;\n }\n }\n\n return fillColor;\n }\n\n private applyLineDash(context: CanvasRenderingContext2D, slsStyle: EsriSLSStyle) {\n if (slsStyle !== \"esriSLSSolid\" && slsStyle !== \"esriSLSNull\") {\n context.setLineDash(ArcGisDashLineStyle.dashValues[slsStyle]);\n }\n }\n\n public applyStrokeStyle(context: CanvasRenderingContext2D) {\n if (!context)\n return;\n\n // Stroke style can be from SFS's outline style or a SLS's color\n let sls: EsriSLS | undefined;\n if (this._symbol.type === \"esriSFS\") {\n const sfs = this._symbol as EsriSFS;\n if (sfs.outline) {\n sls = sfs.outline;\n }\n } else if (this._symbol.type === \"esriSLS\") {\n sls = this._symbol as EsriSLS;\n } else if (this._symbol.type === \"esriSMS\") {\n const sms = this._symbol as EsriSMS;\n if (sms.outline) {\n sls = sms.outline;\n }\n }\n\n if (sls) {\n\n context.lineWidth = (sls.width > 0 ? sls.width : 1);\n if (this._symbol.type === \"esriSLS\")\n context.lineWidth *= this.lineWidthScaleFactor;\n if (sls.color) {\n context.strokeStyle = sls.color.toRgbaString();\n }\n if (sls.style) {\n this.applyLineDash(context, sls.style);\n }\n } else {\n Logger.logTrace(loggerCategory, `Could not apply stroke style`);\n }\n\n }\n /**\n * Draw a simple marker\n * @param x x-axis coordinate in the destination canvas at which to place the center of the marker\n * @param y y-axis coordinate in the destination canvas at which to place the center of the marker\n * @param size size of the marker\n * @public\n */\n public drawSimpleMarker(context: CanvasRenderingContext2D, sms: EsriSMS, x: number, y: number, size: number) {\n const halfSize = sms.size * 0.5;\n if (sms.angle) {\n context.save();\n context.translate(x,y);\n const angle = Angle.createDegrees(sms.angle);\n context.rotate(angle.radians);\n context.translate(-x,-y);\n }\n\n if (sms.style === \"esriSMSSquare\") {\n\n const dx = x + (-0.5 * size);\n const dy = y + (-0.5 * size);\n if (sms.color) {\n this.applyFillStyle(context);\n context.fillRect(dx, dy, size, size);\n }\n if (sms.outline) {\n this.applyStrokeStyle(context);\n context.strokeRect(dx, dy, size, size);\n }\n\n } else if (sms.style === \"esriSMSCircle\") {\n context.beginPath();\n context.arc(x, y, size*0.5, 0, 2*Math.PI);\n context.closePath();\n if (sms.color) {\n this.applyFillStyle(context);\n context.fill();\n }\n if (sms.outline) {\n this.applyStrokeStyle(context);\n context.stroke();\n }\n } else if (sms.style === \"esriSMSCross\") {\n context.beginPath();\n context.moveTo(x-halfSize, y);\n context.lineTo(x+halfSize, y);\n context.moveTo(x, y-halfSize);\n context.lineTo(x, y+halfSize);\n if (sms.outline) {\n this.applyStrokeStyle(context);\n }\n context.stroke();\n } else if (sms.style === \"esriSMSDiamond\") {\n context.beginPath();\n\n context.moveTo(x, y-halfSize);\n context.lineTo(x+halfSize, y);\n context.lineTo(x, y+halfSize);\n context.lineTo(x-halfSize, y);\n context.closePath();\n if (sms.color) {\n this.applyFillStyle(context);\n context.fill();\n }\n if (sms.outline) {\n this.applyStrokeStyle(context);\n }\n context.stroke();\n } else if (sms.style === \"esriSMSTriangle\") {\n context.beginPath();\n context.moveTo(x, y-halfSize);\n context.lineTo(x+halfSize, y+halfSize);\n context.lineTo(x-halfSize, y+halfSize);\n\n context.closePath();\n if (sms.color) {\n this.applyFillStyle(context);\n context.fill();\n }\n if (sms.outline) {\n this.applyStrokeStyle(context);\n }\n context.stroke();\n } else if(sms.style === \"esriSMSX\") {\n context.beginPath();\n context.moveTo(x-halfSize, y-halfSize);\n context.lineTo(x+halfSize, y+halfSize);\n context.moveTo(x-halfSize, y+halfSize);\n context.lineTo(x+halfSize, y-halfSize);\n if (sms.outline) {\n this.applyStrokeStyle(context);\n }\n context.stroke();\n }\n if (sms.angle)\n context.restore();\n }\n\n public drawPoint(context: CanvasRenderingContext2D, ptX: number, ptY: number) {\n if (!context)\n return;\n\n if (this._symbol.type === \"esriPMS\") {\n const pms = this._symbol as EsriPMS;\n const angleDegrees = pms.angle;\n\n // We scale up a little a bit the size of symbol.\n const width = pms.width === undefined ? pms.width : pms.width * 1.25;\n const height = pms.height === undefined ? pms.height : pms.height * 1.25;\n\n let xOffset = 0, yOffset = 0;\n\n // Center the marker around the anchor point\n if (width)\n xOffset = width * -0.5;\n if (height)\n yOffset = height * -0.5;\n\n // Add additional offset\n if (pms.xoffset)\n xOffset += pms.xoffset;\n if (pms.yoffset)\n yOffset += pms.yoffset;\n\n const dx = ptX + xOffset;\n const dy = ptY + yOffset;\n\n if (angleDegrees) {\n context.save();\n context.translate(ptX, ptY);\n const angle = Angle.createDegrees(angleDegrees);\n context.rotate(angle.radians);\n context.translate(-ptX, -ptY);\n }\n\n if (width && height) {\n context.drawImage(pms.image, dx, dy, width, height);\n } else {\n context.drawImage(pms.image, dx, dy);\n }\n\n if (angleDegrees)\n context.restore();\n\n } else if (this._symbol.type === \"esriSMS\") {\n const sms = this._symbol as EsriSMS;\n\n let xOffset = 0;\n let yOffset = 0;\n\n if (sms.xoffset)\n xOffset += sms.xoffset;\n\n if (sms.yoffset)\n yOffset += sms.yoffset;\n\n this.drawSimpleMarker(context, sms, ptX + xOffset, ptY + yOffset, sms.size);\n }\n }\n}\n\n/** @internal */\nexport class ArcGisUniqueValueSymbologyRenderer extends ArcGisSimpleSymbologyRenderer implements ArcGisAttributeDrivenSymbology {\n public override isAttributeDriven(): this is ArcGisAttributeDrivenSymbology {return true;}\n protected _activeFeatureAttributes: {[key: string]: any} | undefined;\n protected uvRenderer: EsriUniqueValueRenderer;\n\n public get rendererFields() {\n if (this.uvRenderer.field1)\n return [this.uvRenderer.field1];\n else\n return undefined;\n }\n\n public constructor(renderer: EsriUniqueValueRenderer, defaultSymbol: EsriSymbol) {\n super(renderer, defaultSymbol);\n\n this.uvRenderer = (this.renderer as EsriUniqueValueRenderer);\n if (this.uvRenderer.defaultSymbol) {\n this._defaultSymbol = this.uvRenderer.defaultSymbol;\n this._symbol = this.defaultSymbol;\n }\n }\n\n public setActiveFeatureAttributes(attributes: { [key: string]: any }) {\n this._activeFeatureAttributes = attributes;\n\n let newSymbolApplied = false;\n if (this._activeFeatureAttributes) {\n if (this.uvRenderer.field1 && Object.keys(this._activeFeatureAttributes).includes(this.uvRenderer.field1)) {\n\n const queryValue = this._activeFeatureAttributes[this.uvRenderer.field1];\n\n if (queryValue !== null && queryValue !== undefined) {\n for (const uvi of this.uvRenderer.uniqueValueInfos) {\n // Strangely, ArcGIS documentation says 'value' is a string,\n // not too sure if a comparison on other types is possible, or its always forced to string properties?\n if (uvi.value === queryValue.toString()) {\n this._symbol = uvi.symbol;\n newSymbolApplied = true;\n break;\n }\n }\n }\n }\n }\n\n // Fallback to default symbology to make sure we render something\n if (!newSymbolApplied) {\n this._symbol = this.defaultSymbol;\n }\n }\n}\n\n/** @internal */\nexport class ArcGisClassBreaksSymbologyRenderer extends ArcGisSimpleSymbologyRenderer implements ArcGisAttributeDrivenSymbology {\n public override isAttributeDriven(): this is ArcGisAttributeDrivenSymbology {return true;}\n protected _activeFeatureAttributes: {[key: string]: any} | undefined;\n protected cbRenderer: EsriClassBreaksRenderer;\n\n public get rendererFields() {\n if (this.cbRenderer)\n return [this.cbRenderer.field];\n else\n return undefined;\n }\n\n public constructor(renderer: EsriClassBreaksRenderer, defaultSymbol: EsriSymbol) {\n super(renderer, defaultSymbol);\n\n this.cbRenderer = (this.renderer as EsriClassBreaksRenderer);\n if (this.cbRenderer.defaultSymbol) {\n this._defaultSymbol = this.cbRenderer.defaultSymbol;\n this._symbol = this.defaultSymbol;\n }\n }\n\n public setActiveFeatureAttributes(attributes: { [key: string]: any }) {\n this._activeFeatureAttributes = attributes;\n\n const newSymbolApplied = false;\n if (this._activeFeatureAttributes) {\n if (Object.keys(this._activeFeatureAttributes).includes(this.cbRenderer.field)) {\n\n const queryValue = this._activeFeatureAttributes[this.cbRenderer.field];\n\n if (queryValue !== null && queryValue !== undefined) {\n let currentMinValue: number|undefined;\n let currentClassIdx = 0;\n do {\n const currentClass = this.cbRenderer.classBreakInfos[currentClassIdx];\n if (currentClass.classMinValue !== undefined) {\n currentMinValue = currentClass.classMinValue;\n } else if (currentClass.classMinValue === undefined && currentClassIdx > 0) {\n currentMinValue = this.cbRenderer.classBreakInfos[currentClassIdx-1].classMaxValue;\n } else {\n currentMinValue = this.cbRenderer.minValue;\n }\n\n if ( queryValue >= currentMinValue\n && queryValue <= currentClass.classMaxValue) {\n this._symbol = currentClass.symbol;\n return;\n }\n }\n while (++currentClassIdx < this.cbRenderer.classBreakInfos.length);\n }\n }\n\n // Fallback to default symbology to make sure we render something\n if (!newSymbolApplied) {\n this._symbol = this.defaultSymbol;\n }\n }\n }\n}\n"]}
|
|
@@ -127,6 +127,24 @@ export declare class EsriUniqueValueInfo {
|
|
|
127
127
|
static fromJSON(json: EsriUniqueValueInfoProps): EsriUniqueValueInfo;
|
|
128
128
|
}
|
|
129
129
|
/** @internal */
|
|
130
|
+
export interface EsriClassBreaksInfoProps {
|
|
131
|
+
classMaxValue: number;
|
|
132
|
+
classMinValue?: number;
|
|
133
|
+
label?: string;
|
|
134
|
+
description?: string;
|
|
135
|
+
symbol: EsriSymbolProps;
|
|
136
|
+
}
|
|
137
|
+
/** @internal */
|
|
138
|
+
export declare class EsriClassBreaksValueInfo {
|
|
139
|
+
readonly classMaxValue: number;
|
|
140
|
+
readonly classMinValue?: number;
|
|
141
|
+
readonly label: string | undefined;
|
|
142
|
+
readonly description: string | undefined;
|
|
143
|
+
readonly symbol: EsriSymbol;
|
|
144
|
+
private constructor();
|
|
145
|
+
static fromJSON(json: EsriClassBreaksInfoProps): EsriClassBreaksValueInfo;
|
|
146
|
+
}
|
|
147
|
+
/** @internal */
|
|
130
148
|
export interface EsriRendererBaseProps {
|
|
131
149
|
type: EsriRendererType;
|
|
132
150
|
}
|
|
@@ -135,10 +153,6 @@ export interface EsriSimpleRendererProps extends EsriRendererBaseProps {
|
|
|
135
153
|
symbol: EsriSymbolProps;
|
|
136
154
|
}
|
|
137
155
|
/** @internal */
|
|
138
|
-
export interface EsriUniqueValueRendererProps extends EsriRendererBaseProps {
|
|
139
|
-
symbol?: EsriSymbolProps;
|
|
140
|
-
}
|
|
141
|
-
/** @internal */
|
|
142
156
|
export interface EsriUniqueValueRendererProps extends EsriRendererBaseProps {
|
|
143
157
|
field1?: string;
|
|
144
158
|
field2?: string;
|
|
@@ -147,13 +161,24 @@ export interface EsriUniqueValueRendererProps extends EsriRendererBaseProps {
|
|
|
147
161
|
uniqueValueInfos: EsriUniqueValueInfoProps[];
|
|
148
162
|
}
|
|
149
163
|
/** @internal */
|
|
150
|
-
export type
|
|
164
|
+
export type EsriClassificationMethodType = "esriClassifyDefinedInterval" | "esriClassifyEqualInterval" | "esriClassifyManual" | "esriClassifyNaturalBreaks" | "esriClassifyQuantile" | "esriClassifyStandardDeviation";
|
|
165
|
+
/** @internal */
|
|
166
|
+
export interface EsriClassBreaksRendererProps extends EsriRendererBaseProps {
|
|
167
|
+
field: string;
|
|
168
|
+
minValue: number;
|
|
169
|
+
defaultSymbol?: EsriSymbolProps;
|
|
170
|
+
classificationMethod: EsriClassificationMethodType;
|
|
171
|
+
classBreakInfos: EsriClassBreaksInfoProps[];
|
|
172
|
+
}
|
|
173
|
+
/** @internal */
|
|
174
|
+
export type EsriRendererType = "simple" | "uniqueValue" | "classBreaks";
|
|
151
175
|
/** @internal */
|
|
152
|
-
export type EsriRendererProps = EsriSimpleRendererProps | EsriUniqueValueRendererProps;
|
|
176
|
+
export type EsriRendererProps = EsriSimpleRendererProps | EsriUniqueValueRendererProps | EsriClassBreaksRendererProps;
|
|
153
177
|
/** @internal */
|
|
154
178
|
export declare abstract class EsriRenderer {
|
|
155
179
|
abstract readonly type: EsriRendererType;
|
|
156
180
|
abstract initialize(): Promise<void>;
|
|
181
|
+
get fields(): string[] | undefined;
|
|
157
182
|
static fromJSON(json: EsriRendererProps): EsriRenderer;
|
|
158
183
|
}
|
|
159
184
|
/** @internal */
|
|
@@ -170,6 +195,7 @@ export declare class EsriUniqueValueRenderer extends EsriRenderer {
|
|
|
170
195
|
readonly type: EsriRendererType;
|
|
171
196
|
readonly defaultSymbol?: EsriSymbol;
|
|
172
197
|
readonly uniqueValueInfos: EsriUniqueValueInfo[];
|
|
198
|
+
get fields(): string[];
|
|
173
199
|
get field1(): string | undefined;
|
|
174
200
|
get field2(): string | undefined;
|
|
175
201
|
get field3(): string | undefined;
|
|
@@ -177,4 +203,18 @@ export declare class EsriUniqueValueRenderer extends EsriRenderer {
|
|
|
177
203
|
initialize(): Promise<void>;
|
|
178
204
|
static fromJSON(json: EsriUniqueValueRendererProps): EsriUniqueValueRenderer;
|
|
179
205
|
}
|
|
206
|
+
/** @internal */
|
|
207
|
+
export declare class EsriClassBreaksRenderer extends EsriRenderer {
|
|
208
|
+
private _props;
|
|
209
|
+
readonly type: EsriRendererType;
|
|
210
|
+
readonly defaultSymbol?: EsriSymbol;
|
|
211
|
+
get classificationMethod(): EsriClassificationMethodType;
|
|
212
|
+
readonly classBreakInfos: EsriClassBreaksValueInfo[];
|
|
213
|
+
get fields(): string[] | undefined;
|
|
214
|
+
get field(): string;
|
|
215
|
+
get minValue(): number;
|
|
216
|
+
protected constructor(json: EsriClassBreaksRendererProps);
|
|
217
|
+
initialize(): Promise<void>;
|
|
218
|
+
static fromJSON(json: EsriClassBreaksRendererProps): EsriClassBreaksRenderer;
|
|
219
|
+
}
|
|
180
220
|
//# sourceMappingURL=EsriSymbology.d.ts.map
|