@itwin/map-layers-formats 5.0.0-dev.7 → 5.0.0-dev.70
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 +31 -1
- package/lib/cjs/ArcGisFeature/ArcGisFeatureFormat.js +1 -1
- package/lib/cjs/ArcGisFeature/ArcGisFeatureFormat.js.map +1 -1
- package/lib/cjs/ArcGisFeature/ArcGisFeatureProvider.js +43 -40
- package/lib/cjs/ArcGisFeature/ArcGisFeatureProvider.js.map +1 -1
- package/lib/cjs/ArcGisFeature/ArcGisFeatureQuery.js +17 -0
- package/lib/cjs/ArcGisFeature/ArcGisFeatureQuery.js.map +1 -1
- package/lib/cjs/ArcGisFeature/ArcGisFeatureReader.js +2 -0
- package/lib/cjs/ArcGisFeature/ArcGisFeatureReader.js.map +1 -1
- package/lib/cjs/ArcGisFeature/ArcGisFeatureResponse.js +3 -0
- package/lib/cjs/ArcGisFeature/ArcGisFeatureResponse.js.map +1 -1
- package/lib/cjs/ArcGisFeature/ArcGisJsonFeatureReader.js +1 -0
- package/lib/cjs/ArcGisFeature/ArcGisJsonFeatureReader.js.map +1 -1
- package/lib/cjs/ArcGisFeature/ArcGisPbfFeatureReader.js.map +1 -1
- package/lib/cjs/ArcGisFeature/ArcGisSymbologyRenderer.js +37 -32
- package/lib/cjs/ArcGisFeature/ArcGisSymbologyRenderer.js.map +1 -1
- package/lib/cjs/ArcGisFeature/EsriSymbology.js +26 -5
- package/lib/cjs/ArcGisFeature/EsriSymbology.js.map +1 -1
- package/lib/cjs/ArcGisFeature/esriPBuffer.gen.js +48 -72
- package/lib/cjs/ArcGisFeature/esriPBuffer.gen.js.map +1 -1
- package/lib/cjs/Feature/DefaultMarkerIcon.js +9 -9
- package/lib/cjs/Feature/DefaultMarkerIcon.js.map +1 -1
- package/lib/cjs/Feature/FeatureCanvasRenderer.js +2 -0
- package/lib/cjs/Feature/FeatureCanvasRenderer.js.map +1 -1
- package/lib/cjs/Feature/FeatureInfoReader.js +20 -20
- package/lib/cjs/Feature/FeatureInfoReader.js.map +1 -1
- package/lib/cjs/Feature/FeatureSymbology.js.map +1 -1
- package/lib/cjs/Feature/RandomMapColor.js +10 -10
- package/lib/cjs/Feature/RandomMapColor.js.map +1 -1
- package/lib/cjs/GeoJSON/GeoJSONGeometry.js.map +1 -1
- package/lib/cjs/GeoJSON/GeoJSONGeometryReader.js +1 -0
- package/lib/cjs/GeoJSON/GeoJSONGeometryReader.js.map +1 -1
- package/lib/cjs/GoogleMaps/GoogleMapDecorator.d.ts +36 -0
- package/lib/cjs/GoogleMaps/GoogleMapDecorator.d.ts.map +1 -0
- package/lib/cjs/GoogleMaps/GoogleMapDecorator.js +83 -0
- package/lib/cjs/GoogleMaps/GoogleMapDecorator.js.map +1 -0
- package/lib/cjs/GoogleMaps/GoogleMaps.d.ts +166 -0
- package/lib/cjs/GoogleMaps/GoogleMaps.d.ts.map +1 -0
- package/lib/cjs/GoogleMaps/GoogleMaps.js +56 -0
- package/lib/cjs/GoogleMaps/GoogleMaps.js.map +1 -0
- package/lib/cjs/GoogleMaps/GoogleMapsImageryFormat.d.ts +10 -0
- package/lib/cjs/GoogleMaps/GoogleMapsImageryFormat.d.ts.map +1 -0
- package/lib/cjs/GoogleMaps/GoogleMapsImageryFormat.js +20 -0
- package/lib/cjs/GoogleMaps/GoogleMapsImageryFormat.js.map +1 -0
- package/lib/cjs/GoogleMaps/GoogleMapsImageryProvider.d.ts +25 -0
- package/lib/cjs/GoogleMaps/GoogleMapsImageryProvider.d.ts.map +1 -0
- package/lib/cjs/GoogleMaps/GoogleMapsImageryProvider.js +232 -0
- package/lib/cjs/GoogleMaps/GoogleMapsImageryProvider.js.map +1 -0
- package/lib/cjs/Icons/MapInfoIcon.js.map +1 -1
- package/lib/cjs/OgcApiFeatures/OgcApiFeaturesFormat.js +1 -1
- package/lib/cjs/OgcApiFeatures/OgcApiFeaturesFormat.js.map +1 -1
- package/lib/cjs/OgcApiFeatures/OgcApiFeaturesProvider.js +41 -34
- package/lib/cjs/OgcApiFeatures/OgcApiFeaturesProvider.js.map +1 -1
- package/lib/cjs/OgcApiFeatures/OgcApiFeaturesReader.js +1 -0
- package/lib/cjs/OgcApiFeatures/OgcApiFeaturesReader.js.map +1 -1
- package/lib/cjs/Tools/GeometryTerrainDraper.d.ts +1 -1
- package/lib/cjs/Tools/GeometryTerrainDraper.d.ts.map +1 -1
- package/lib/cjs/Tools/GeometryTerrainDraper.js +10 -6
- package/lib/cjs/Tools/GeometryTerrainDraper.js.map +1 -1
- package/lib/cjs/Tools/MapFeatureInfoDecorator.d.ts.map +1 -1
- package/lib/cjs/Tools/MapFeatureInfoDecorator.js +56 -52
- package/lib/cjs/Tools/MapFeatureInfoDecorator.js.map +1 -1
- package/lib/cjs/Tools/MapFeatureInfoTool.js +13 -16
- package/lib/cjs/Tools/MapFeatureInfoTool.js.map +1 -1
- package/lib/cjs/internal/GoogleMapsUtils.d.ts +38 -0
- package/lib/cjs/internal/GoogleMapsUtils.d.ts.map +1 -0
- package/lib/cjs/internal/GoogleMapsUtils.js +104 -0
- package/lib/cjs/internal/GoogleMapsUtils.js.map +1 -0
- package/lib/cjs/map-layers-formats.d.ts +1 -0
- package/lib/cjs/map-layers-formats.d.ts.map +1 -1
- package/lib/cjs/map-layers-formats.js +1 -0
- package/lib/cjs/map-layers-formats.js.map +1 -1
- package/lib/cjs/mapLayersFormats.d.ts.map +1 -1
- package/lib/cjs/mapLayersFormats.js +4 -1
- package/lib/cjs/mapLayersFormats.js.map +1 -1
- package/lib/esm/ArcGisFeature/ArcGisFeatureFormat.js +1 -1
- package/lib/esm/ArcGisFeature/ArcGisFeatureFormat.js.map +1 -1
- package/lib/esm/ArcGisFeature/ArcGisFeatureProvider.js +43 -40
- package/lib/esm/ArcGisFeature/ArcGisFeatureProvider.js.map +1 -1
- package/lib/esm/ArcGisFeature/ArcGisFeatureQuery.js +17 -0
- package/lib/esm/ArcGisFeature/ArcGisFeatureQuery.js.map +1 -1
- package/lib/esm/ArcGisFeature/ArcGisFeatureReader.js +2 -0
- package/lib/esm/ArcGisFeature/ArcGisFeatureReader.js.map +1 -1
- package/lib/esm/ArcGisFeature/ArcGisFeatureResponse.js +3 -0
- package/lib/esm/ArcGisFeature/ArcGisFeatureResponse.js.map +1 -1
- package/lib/esm/ArcGisFeature/ArcGisJsonFeatureReader.js +1 -0
- package/lib/esm/ArcGisFeature/ArcGisJsonFeatureReader.js.map +1 -1
- package/lib/esm/ArcGisFeature/ArcGisPbfFeatureReader.js.map +1 -1
- package/lib/esm/ArcGisFeature/ArcGisSymbologyRenderer.js +37 -32
- package/lib/esm/ArcGisFeature/ArcGisSymbologyRenderer.js.map +1 -1
- package/lib/esm/ArcGisFeature/EsriSymbology.js +26 -5
- package/lib/esm/ArcGisFeature/EsriSymbology.js.map +1 -1
- package/lib/esm/ArcGisFeature/esriPBuffer.gen.js +48 -72
- package/lib/esm/ArcGisFeature/esriPBuffer.gen.js.map +1 -1
- package/lib/esm/Feature/DefaultMarkerIcon.js +9 -9
- package/lib/esm/Feature/DefaultMarkerIcon.js.map +1 -1
- package/lib/esm/Feature/FeatureCanvasRenderer.js +2 -0
- package/lib/esm/Feature/FeatureCanvasRenderer.js.map +1 -1
- package/lib/esm/Feature/FeatureInfoReader.js +20 -20
- package/lib/esm/Feature/FeatureInfoReader.js.map +1 -1
- package/lib/esm/Feature/FeatureSymbology.js.map +1 -1
- package/lib/esm/Feature/RandomMapColor.js +10 -10
- package/lib/esm/Feature/RandomMapColor.js.map +1 -1
- package/lib/esm/GeoJSON/GeoJSONGeometry.js.map +1 -1
- package/lib/esm/GeoJSON/GeoJSONGeometryReader.js +1 -0
- package/lib/esm/GeoJSON/GeoJSONGeometryReader.js.map +1 -1
- package/lib/esm/GoogleMaps/GoogleMapDecorator.d.ts +36 -0
- package/lib/esm/GoogleMaps/GoogleMapDecorator.d.ts.map +1 -0
- package/lib/esm/GoogleMaps/GoogleMapDecorator.js +78 -0
- package/lib/esm/GoogleMaps/GoogleMapDecorator.js.map +1 -0
- package/lib/esm/GoogleMaps/GoogleMaps.d.ts +166 -0
- package/lib/esm/GoogleMaps/GoogleMaps.d.ts.map +1 -0
- package/lib/esm/GoogleMaps/GoogleMaps.js +53 -0
- package/lib/esm/GoogleMaps/GoogleMaps.js.map +1 -0
- package/lib/esm/GoogleMaps/GoogleMapsImageryFormat.d.ts +10 -0
- package/lib/esm/GoogleMaps/GoogleMapsImageryFormat.d.ts.map +1 -0
- package/lib/esm/GoogleMaps/GoogleMapsImageryFormat.js +16 -0
- package/lib/esm/GoogleMaps/GoogleMapsImageryFormat.js.map +1 -0
- package/lib/esm/GoogleMaps/GoogleMapsImageryProvider.d.ts +25 -0
- package/lib/esm/GoogleMaps/GoogleMapsImageryProvider.d.ts.map +1 -0
- package/lib/esm/GoogleMaps/GoogleMapsImageryProvider.js +228 -0
- package/lib/esm/GoogleMaps/GoogleMapsImageryProvider.js.map +1 -0
- package/lib/esm/Icons/MapInfoIcon.js.map +1 -1
- package/lib/esm/OgcApiFeatures/OgcApiFeaturesFormat.js +1 -1
- package/lib/esm/OgcApiFeatures/OgcApiFeaturesFormat.js.map +1 -1
- package/lib/esm/OgcApiFeatures/OgcApiFeaturesProvider.js +41 -34
- package/lib/esm/OgcApiFeatures/OgcApiFeaturesProvider.js.map +1 -1
- package/lib/esm/OgcApiFeatures/OgcApiFeaturesReader.js +1 -0
- package/lib/esm/OgcApiFeatures/OgcApiFeaturesReader.js.map +1 -1
- package/lib/esm/Tools/GeometryTerrainDraper.d.ts +1 -1
- package/lib/esm/Tools/GeometryTerrainDraper.d.ts.map +1 -1
- package/lib/esm/Tools/GeometryTerrainDraper.js +10 -6
- package/lib/esm/Tools/GeometryTerrainDraper.js.map +1 -1
- package/lib/esm/Tools/MapFeatureInfoDecorator.d.ts.map +1 -1
- package/lib/esm/Tools/MapFeatureInfoDecorator.js +56 -52
- package/lib/esm/Tools/MapFeatureInfoDecorator.js.map +1 -1
- package/lib/esm/Tools/MapFeatureInfoTool.js +13 -16
- package/lib/esm/Tools/MapFeatureInfoTool.js.map +1 -1
- package/lib/esm/internal/GoogleMapsUtils.d.ts +38 -0
- package/lib/esm/internal/GoogleMapsUtils.d.ts.map +1 -0
- package/lib/esm/internal/GoogleMapsUtils.js +101 -0
- package/lib/esm/internal/GoogleMapsUtils.js.map +1 -0
- package/lib/esm/map-layers-formats.d.ts +1 -0
- package/lib/esm/map-layers-formats.d.ts.map +1 -1
- package/lib/esm/map-layers-formats.js +1 -0
- package/lib/esm/map-layers-formats.js.map +1 -1
- package/lib/esm/mapLayersFormats.d.ts.map +1 -1
- package/lib/esm/mapLayersFormats.js +4 -1
- package/lib/esm/mapLayersFormats.js.map +1 -1
- package/lib/public/images/google_on_non_white.png +0 -0
- package/lib/public/images/google_on_non_white_hdpi.png +0 -0
- package/lib/public/images/google_on_white.png +0 -0
- package/lib/public/images/google_on_white_hdpi.png +0 -0
- package/lib/public/locales/en/mapLayersFormats.json +18 -18
- package/package.json +13 -13
|
@@ -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 { ArcGisGeometryReaderJSON, FeatureAttributeDrivenSymbology, FeatureGeometryRenderer, GraphicsGeometryRenderer, 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: FeatureAttributeDrivenSymbology, 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: FeatureGeometryRenderer) {\r\n const responseObj = response.data;\r\n if (responseObj.geometryType) {\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 (renderer.hasSymbologyRenderer() && renderer.symbolRenderer.isAttributeDriven()) {\r\n // Read attributes if needed (attribute driven symbology)\r\n this.applySymbologyAttributes(renderer.symbolRenderer, 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?: GraphicsGeometryRenderer) {\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 && renderer) {\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 { ArcGisGeometryReaderJSON, FeatureAttributeDrivenSymbology, FeatureGeometryRenderer, GraphicsGeometryRenderer, 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: FeatureAttributeDrivenSymbology, 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: FeatureGeometryRenderer) {\n const responseObj = response.data;\n if (responseObj.geometryType) {\n const geomReader = new ArcGisGeometryReaderJSON(responseObj.geometryType, renderer, renderer.transform === undefined);\n\n for (const feature of responseObj.features) {\n if (renderer.hasSymbologyRenderer() && renderer.symbolRenderer.isAttributeDriven()) {\n // Read attributes if needed (attribute driven symbology)\n this.applySymbologyAttributes(renderer.symbolRenderer, feature);\n }\n\n await geomReader.readGeometry(feature.geometry);\n }\n }\n }\n\n public async readFeatureInfo(response: ArcGisResponseData, featureInfos: MapLayerFeatureInfo[], renderer?: GraphicsGeometryRenderer) {\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 && renderer) {\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 { FeatureAttributeDrivenSymbology, FeatureGeometryRenderer, GraphicsGeometryRenderer, 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: FeatureGeometryRenderer) {\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 // 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\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 (renderer.hasSymbologyRenderer() && renderer.symbolRenderer.isAttributeDriven()) {\r\n // Read attributes if needed (attribute driven symbology)\r\n this.applySymbologyAttributes(renderer.symbolRenderer, 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: FeatureAttributeDrivenSymbology, 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?: GraphicsGeometryRenderer) {\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 { FeatureAttributeDrivenSymbology, FeatureGeometryRenderer, GraphicsGeometryRenderer, 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: FeatureGeometryRenderer) {\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 // 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\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 (renderer.hasSymbologyRenderer() && renderer.symbolRenderer.isAttributeDriven()) {\n // Read attributes if needed (attribute driven symbology)\n this.applySymbologyAttributes(renderer.symbolRenderer, 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: FeatureAttributeDrivenSymbology, 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?: GraphicsGeometryRenderer) {\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"]}
|
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
4
4
|
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
5
5
|
*--------------------------------------------------------------------------------------------*/
|
|
6
|
-
var _a;
|
|
7
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
7
|
exports.ArcGisClassBreaksSymbologyRenderer = exports.ArcGisUniqueValueSymbologyRenderer = exports.ArcGisSimpleSymbologyRenderer = exports.ArcGisDashLineStyle = exports.ArcGisSymbologyCanvasRenderer = void 0;
|
|
9
8
|
const core_bentley_1 = require("@itwin/core-bentley");
|
|
@@ -12,9 +11,7 @@ const core_geometry_1 = require("@itwin/core-geometry");
|
|
|
12
11
|
const loggerCategory = "MapLayersFormats.ArcGISFeature";
|
|
13
12
|
/** @internal */
|
|
14
13
|
class ArcGisSymbologyCanvasRenderer {
|
|
15
|
-
|
|
16
|
-
this.activeGeometryType = "";
|
|
17
|
-
}
|
|
14
|
+
activeGeometryType = "";
|
|
18
15
|
static create(renderer, defaultSymbol, geometryType) {
|
|
19
16
|
if (renderer?.type === "uniqueValue") {
|
|
20
17
|
return new ArcGisUniqueValueSymbologyRenderer(renderer, defaultSymbol, geometryType);
|
|
@@ -30,44 +27,46 @@ class ArcGisSymbologyCanvasRenderer {
|
|
|
30
27
|
exports.ArcGisSymbologyCanvasRenderer = ArcGisSymbologyCanvasRenderer;
|
|
31
28
|
/** @internal */
|
|
32
29
|
class ArcGisDashLineStyle {
|
|
30
|
+
// ESRI does not provide any values for their line style definition, those values have been
|
|
31
|
+
// determined by pixel-peeping tiles rendered by ArcGIS servers.
|
|
32
|
+
// Available line styles are documented here: https://developers.arcgis.com/web-map-specification/objects/esriSLS_symbol/
|
|
33
|
+
static _dashLineLength = 6;
|
|
34
|
+
static _dashGapLength = 3;
|
|
35
|
+
static _dashShortLineLength = 3;
|
|
36
|
+
static _dashShortGapLength = 3;
|
|
37
|
+
static _dashLongLineLength = 12;
|
|
38
|
+
static _dashLongLineDotDotLength = 18;
|
|
39
|
+
static _dashLongGapLength = 6;
|
|
40
|
+
static _dotLineLength = 2;
|
|
41
|
+
static _dotGapLength = 3;
|
|
42
|
+
static _shortDotLineLength = 1;
|
|
43
|
+
static _shortDotGapLength = 2;
|
|
44
|
+
static dashValues = {
|
|
45
|
+
esriSLSDash: [this._dashLineLength, this._dashGapLength],
|
|
46
|
+
esriSLSDashDot: [this._dashLineLength, this._dotGapLength, this._dotLineLength, this._dotGapLength],
|
|
47
|
+
esriSLSDashDotDot: [this._dashLongLineLength, this._dotGapLength, this._dotLineLength, this._dotGapLength, this._dotLineLength, this._dotGapLength],
|
|
48
|
+
esriSLSDot: [this._dashLineLength, this._dotGapLength],
|
|
49
|
+
esriSLSLongDash: [this._dashLongLineLength, this._dashLongGapLength],
|
|
50
|
+
esriSLSLongDashDot: [this._dashLongLineDotDotLength, this._dashGapLength, this._dotLineLength, this._dashGapLength],
|
|
51
|
+
esriSLSShortDash: [this._dashShortLineLength, this._dashShortGapLength],
|
|
52
|
+
esriSLSShortDashDot: [this._dashShortLineLength, this._dashShortGapLength, this._dotLineLength, this._dashShortGapLength],
|
|
53
|
+
esriSLSShortDashDotDot: [this._dashLineLength, this._dashShortGapLength, this._dotLineLength, this._dashGapLength, this._dotLineLength, this._dashShortGapLength],
|
|
54
|
+
esriSLSShortDot: [this._shortDotLineLength, this._shortDotGapLength],
|
|
55
|
+
};
|
|
33
56
|
}
|
|
34
57
|
exports.ArcGisDashLineStyle = ArcGisDashLineStyle;
|
|
35
|
-
_a = ArcGisDashLineStyle;
|
|
36
|
-
// ESRI does not provide any values for their line style definition, those values have been
|
|
37
|
-
// determined by pixel-peeping tiles rendered by ArcGIS servers.
|
|
38
|
-
// Available line styles are documented here: https://developers.arcgis.com/web-map-specification/objects/esriSLS_symbol/
|
|
39
|
-
ArcGisDashLineStyle._dashLineLength = 6;
|
|
40
|
-
ArcGisDashLineStyle._dashGapLength = 3;
|
|
41
|
-
ArcGisDashLineStyle._dashShortLineLength = 3;
|
|
42
|
-
ArcGisDashLineStyle._dashShortGapLength = 3;
|
|
43
|
-
ArcGisDashLineStyle._dashLongLineLength = 12;
|
|
44
|
-
ArcGisDashLineStyle._dashLongLineDotDotLength = 18;
|
|
45
|
-
ArcGisDashLineStyle._dashLongGapLength = 6;
|
|
46
|
-
ArcGisDashLineStyle._dotLineLength = 2;
|
|
47
|
-
ArcGisDashLineStyle._dotGapLength = 3;
|
|
48
|
-
ArcGisDashLineStyle._shortDotLineLength = 1;
|
|
49
|
-
ArcGisDashLineStyle._shortDotGapLength = 2;
|
|
50
|
-
ArcGisDashLineStyle.dashValues = {
|
|
51
|
-
esriSLSDash: [_a._dashLineLength, _a._dashGapLength],
|
|
52
|
-
esriSLSDashDot: [_a._dashLineLength, _a._dotGapLength, _a._dotLineLength, _a._dotGapLength],
|
|
53
|
-
esriSLSDashDotDot: [_a._dashLongLineLength, _a._dotGapLength, _a._dotLineLength, _a._dotGapLength, _a._dotLineLength, _a._dotGapLength],
|
|
54
|
-
esriSLSDot: [_a._dashLineLength, _a._dotGapLength],
|
|
55
|
-
esriSLSLongDash: [_a._dashLongLineLength, _a._dashLongGapLength],
|
|
56
|
-
esriSLSLongDashDot: [_a._dashLongLineDotDotLength, _a._dashGapLength, _a._dotLineLength, _a._dashGapLength],
|
|
57
|
-
esriSLSShortDash: [_a._dashShortLineLength, _a._dashShortGapLength],
|
|
58
|
-
esriSLSShortDashDot: [_a._dashShortLineLength, _a._dashShortGapLength, _a._dotLineLength, _a._dashShortGapLength],
|
|
59
|
-
esriSLSShortDashDotDot: [_a._dashLineLength, _a._dashShortGapLength, _a._dotLineLength, _a._dashGapLength, _a._dotLineLength, _a._dashShortGapLength],
|
|
60
|
-
esriSLSShortDot: [_a._shortDotLineLength, _a._shortDotGapLength],
|
|
61
|
-
};
|
|
62
58
|
/** @internal */
|
|
63
59
|
class ArcGisSimpleSymbologyRenderer extends ArcGisSymbologyCanvasRenderer {
|
|
60
|
+
_symbol;
|
|
61
|
+
_defaultSymbol;
|
|
64
62
|
isAttributeDriven() { return false; }
|
|
63
|
+
lineWidthScaleFactor = 2; // This is value is empirical, this might need to be adjusted
|
|
65
64
|
get symbol() { return (this._symbol ?? this.defaultSymbol); }
|
|
66
65
|
set symbol(symbol) { this._symbol = symbol; }
|
|
67
66
|
get defaultSymbol() { return this._defaultSymbol.getSymbology(this.activeGeometryType); }
|
|
67
|
+
renderer;
|
|
68
68
|
constructor(renderer, defaultSymbol, geometryType) {
|
|
69
69
|
super();
|
|
70
|
-
this.lineWidthScaleFactor = 2; // This is value is empirical, this might need to be adjusted
|
|
71
70
|
this._defaultSymbol = defaultSymbol;
|
|
72
71
|
// ArcGIS service normally advertise upfront he geometry of all features. It's always possible to opt-out, but then
|
|
73
72
|
// you will have to set the activeGeometryType before rendering.
|
|
@@ -301,6 +300,9 @@ exports.ArcGisSimpleSymbologyRenderer = ArcGisSimpleSymbologyRenderer;
|
|
|
301
300
|
/** @internal */
|
|
302
301
|
class ArcGisUniqueValueSymbologyRenderer extends ArcGisSimpleSymbologyRenderer {
|
|
303
302
|
isAttributeDriven() { return true; }
|
|
303
|
+
_activeFeatureAttributes;
|
|
304
|
+
uvRenderer;
|
|
305
|
+
_defaultRenderSymbol;
|
|
304
306
|
get defaultSymbol() { return this._defaultRenderSymbol ?? super.defaultSymbol; }
|
|
305
307
|
get rendererFields() {
|
|
306
308
|
if (this.uvRenderer.field1)
|
|
@@ -342,6 +344,9 @@ exports.ArcGisUniqueValueSymbologyRenderer = ArcGisUniqueValueSymbologyRenderer;
|
|
|
342
344
|
/** @internal */
|
|
343
345
|
class ArcGisClassBreaksSymbologyRenderer extends ArcGisSimpleSymbologyRenderer {
|
|
344
346
|
isAttributeDriven() { return true; }
|
|
347
|
+
_activeFeatureAttributes;
|
|
348
|
+
cbRenderer;
|
|
349
|
+
_defaultRenderSymbol;
|
|
345
350
|
get defaultSymbol() { return this._defaultRenderSymbol ?? super.defaultSymbol; }
|
|
346
351
|
get rendererFields() {
|
|
347
352
|
if (this.cbRenderer)
|
|
@@ -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 { EsriClassBreaksRenderer, EsriPMS, EsriRenderer, EsriSFS, EsriSimpleRenderer, EsriSLS, EsriSLSStyle, EsriSMS, EsriSymbol, EsriUniqueValueRenderer } from \"./EsriSymbology\";\r\nimport { FeatureAttributeDrivenSymbology, FeatureSymbologyRenderer } from \"@itwin/core-frontend\";\r\nimport { Angle } from \"@itwin/core-geometry\";\r\nimport { FeatureDefaultSymbology } from \"../Feature/FeatureSymbology\";\r\nimport { ArcGisFeatureGeometryType } from \"./ArcGisFeatureQuery\";\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/** Feature Symbology renderer applicable to an HTML 2D Canvas\r\n * @internal\r\n */\r\nexport interface FeatureSymbologyCanvasRenderer extends FeatureSymbologyRenderer {\r\n applyFillStyle(context: CanvasRenderingContext2D): void;\r\n applyStrokeStyle(context: CanvasRenderingContext2D): void;\r\n drawPoint(context: CanvasRenderingContext2D, ptX: number, ptY: number): void;\r\n}\r\n\r\n/** @internal */\r\nexport abstract class ArcGisSymbologyCanvasRenderer implements FeatureSymbologyCanvasRenderer {\r\n\r\n public abstract readonly renderer?: EsriRenderer;\r\n\r\n public abstract get symbol(): EsriSymbol;\r\n public abstract set symbol(symbol: EsriSymbol|undefined);\r\n public abstract get defaultSymbol(): EsriSymbol;\r\n public activeGeometryType: string = \"\";\r\n public abstract isAttributeDriven(): this is FeatureAttributeDrivenSymbology;\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: FeatureDefaultSymbology, geometryType?: ArcGisFeatureGeometryType): ArcGisSymbologyCanvasRenderer {\r\n if (renderer?.type === \"uniqueValue\") {\r\n return new ArcGisUniqueValueSymbologyRenderer(renderer as EsriUniqueValueRenderer, defaultSymbol, geometryType);\r\n } else if (renderer?.type === \"classBreaks\") {\r\n return new ArcGisClassBreaksSymbologyRenderer(renderer as EsriClassBreaksRenderer, defaultSymbol, geometryType);\r\n } else {\r\n return new ArcGisSimpleSymbologyRenderer(renderer, defaultSymbol, geometryType);\r\n }\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 ArcGisSymbologyCanvasRenderer {\r\n\r\n protected _symbol: EsriSymbol|undefined;\r\n protected _defaultSymbol: FeatureDefaultSymbology;\r\n\r\n public override isAttributeDriven(): this is FeatureAttributeDrivenSymbology {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(): EsriSymbol {return (this._symbol ?? this.defaultSymbol);}\r\n public set symbol(symbol: EsriSymbol|undefined) {this._symbol = symbol;}\r\n\r\n public get defaultSymbol() {return this._defaultSymbol.getSymbology(this.activeGeometryType) as EsriSymbol;}\r\n public override readonly renderer?: EsriRenderer;\r\n\r\n public constructor(renderer: EsriRenderer|undefined, defaultSymbol: FeatureDefaultSymbology, geometryType?: ArcGisFeatureGeometryType) {\r\n super();\r\n this._defaultSymbol = defaultSymbol;\r\n\r\n // ArcGIS service normally advertise upfront he geometry of all features. It's always possible to opt-out, but then\r\n // you will have to set the activeGeometryType before rendering.\r\n if (geometryType)\r\n this.activeGeometryType = geometryType;\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 }\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 const symbol = this.symbol;\r\n let fillColor: ColorDef | undefined;\r\n if (symbol.type === \"esriSFS\") {\r\n const sfs = symbol as EsriSFS;\r\n if (sfs.color) {\r\n fillColor = sfs.color;\r\n }\r\n } else if (symbol.type === \"esriSMS\") {\r\n const sms = 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 const symbol = this.symbol;\r\n if (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 (symbol.type === \"esriSLS\") {\r\n sls = this.symbol as EsriSLS;\r\n } else if (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 (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 const symbol = this.symbol;\r\n\r\n if (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 const width = pms.width;\r\n const height = pms.height;\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 (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 FeatureAttributeDrivenSymbology {\r\n public override isAttributeDriven(): this is FeatureAttributeDrivenSymbology {return true;}\r\n protected _activeFeatureAttributes: {[key: string]: any} | undefined;\r\n protected uvRenderer: EsriUniqueValueRenderer;\r\n private _defaultRenderSymbol: EsriSymbol|undefined;\r\n\r\n public override get defaultSymbol() {return this._defaultRenderSymbol ?? super.defaultSymbol;}\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: FeatureDefaultSymbology, geometryType?: ArcGisFeatureGeometryType) {\r\n super(renderer, defaultSymbol, geometryType);\r\n\r\n this.uvRenderer = (this.renderer as EsriUniqueValueRenderer);\r\n this._defaultRenderSymbol = this.uvRenderer.defaultSymbol;\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 = undefined;\r\n }\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class ArcGisClassBreaksSymbologyRenderer extends ArcGisSimpleSymbologyRenderer implements FeatureAttributeDrivenSymbology {\r\n public override isAttributeDriven(): this is FeatureAttributeDrivenSymbology {return true;}\r\n protected _activeFeatureAttributes: {[key: string]: any} | undefined;\r\n protected cbRenderer: EsriClassBreaksRenderer;\r\n private _defaultRenderSymbol: EsriSymbol|undefined;\r\n\r\n public override get defaultSymbol() {return this._defaultRenderSymbol ?? super.defaultSymbol;}\r\n\r\n public get rendererFields() {\r\n if (this.cbRenderer)\r\n return [this.cbRenderer.field];\r\n else\r\n return undefined;\r\n }\r\n\r\n public constructor(renderer: EsriClassBreaksRenderer, defaultSymbol: FeatureDefaultSymbology, geometryType?: ArcGisFeatureGeometryType) {\r\n super(renderer, defaultSymbol, geometryType);\r\n\r\n this.cbRenderer = (this.renderer as EsriClassBreaksRenderer);\r\n this._defaultRenderSymbol = this.cbRenderer.defaultSymbol;\r\n }\r\n\r\n public setActiveFeatureAttributes(attributes: { [key: string]: any }) {\r\n this._activeFeatureAttributes = attributes;\r\n\r\n const newSymbolApplied = false;\r\n if (this._activeFeatureAttributes) {\r\n if (Object.keys(this._activeFeatureAttributes).includes(this.cbRenderer.field)) {\r\n\r\n const queryValue = this._activeFeatureAttributes[this.cbRenderer.field];\r\n\r\n if (queryValue !== null && queryValue !== undefined) {\r\n let currentMinValue: number|undefined;\r\n let currentClassIdx = 0;\r\n do {\r\n const currentClass = this.cbRenderer.classBreakInfos[currentClassIdx];\r\n if (currentClass.classMinValue !== undefined) {\r\n currentMinValue = currentClass.classMinValue;\r\n } else if (currentClass.classMinValue === undefined && currentClassIdx > 0) {\r\n currentMinValue = this.cbRenderer.classBreakInfos[currentClassIdx-1].classMaxValue;\r\n } else {\r\n currentMinValue = this.cbRenderer.minValue;\r\n }\r\n\r\n if ( queryValue >= currentMinValue\r\n && queryValue <= currentClass.classMaxValue) {\r\n this.symbol = currentClass.symbol;\r\n return;\r\n }\r\n }\r\n while (++currentClassIdx < this.cbRenderer.classBreakInfos.length);\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}\r\n"]}
|
|
1
|
+
{"version":3,"file":"ArcGisSymbologyRenderer.js","sourceRoot":"","sources":["../../../src/ArcGisFeature/ArcGisSymbologyRenderer.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;;;AAE/F,sDAA6C;AAI7C,wDAA6C;AAI7C,gBAAgB;AAChB,MAAM,cAAc,GAAI,gCAAgC,CAAC;AAczD,gBAAgB;AAChB,MAAsB,6BAA6B;IAO1C,kBAAkB,GAAW,EAAE,CAAC;IAMhC,MAAM,CAAC,MAAM,CAAC,QAAgC,EAAE,aAAsC,EAAE,YAAwC;QACrI,IAAI,QAAQ,EAAE,IAAI,KAAK,aAAa,EAAE,CAAC;YACrC,OAAO,IAAI,kCAAkC,CAAC,QAAmC,EAAE,aAAa,EAAE,YAAY,CAAC,CAAC;QAClH,CAAC;aAAM,IAAI,QAAQ,EAAE,IAAI,KAAK,aAAa,EAAE,CAAC;YAC5C,OAAO,IAAI,kCAAkC,CAAC,QAAmC,EAAE,aAAa,EAAE,YAAY,CAAC,CAAC;QAClH,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,6BAA6B,CAAC,QAAQ,EAAE,aAAa,EAAE,YAAY,CAAC,CAAC;QAClF,CAAC;IACH,CAAC;CACF;AAtBD,sEAsBC;AAED,gBAAgB;AAChB,MAAa,mBAAmB;IAC9B,2FAA2F;IAC3F,gEAAgE;IAChE,yHAAyH;IACjH,MAAM,CAAC,eAAe,GAAG,CAAC,CAAC;IAC3B,MAAM,CAAC,cAAc,GAAG,CAAC,CAAC;IAC1B,MAAM,CAAC,oBAAoB,GAAG,CAAC,CAAC;IAChC,MAAM,CAAC,mBAAmB,GAAG,CAAC,CAAC;IAC/B,MAAM,CAAC,mBAAmB,GAAG,EAAE,CAAC;IAChC,MAAM,CAAC,yBAAyB,GAAG,EAAE,CAAC;IACtC,MAAM,CAAC,kBAAkB,GAAG,CAAC,CAAC;IAC9B,MAAM,CAAC,cAAc,GAAG,CAAC,CAAC;IAC1B,MAAM,CAAC,aAAa,GAAG,CAAC,CAAC;IACzB,MAAM,CAAC,mBAAmB,GAAG,CAAC,CAAC;IAC/B,MAAM,CAAC,kBAAkB,GAAG,CAAC,CAAC;IAC/B,MAAM,CAAC,UAAU,GAAG;QACzB,WAAW,EAAG,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,cAAc,CAAC;QACzD,cAAc,EAAG,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,aAAa,CAAC;QACpG,iBAAiB,EAAG,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,aAAa,CAAC;QACpJ,UAAU,EAAG,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,aAAa,CAAC;QACvD,eAAe,EAAG,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,kBAAkB,CAAC;QACrE,kBAAkB,EAAG,CAAC,IAAI,CAAC,yBAAyB,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC;QACpH,gBAAgB,EAAG,CAAC,IAAI,CAAC,oBAAoB,EAAE,IAAI,CAAC,mBAAmB,CAAC;QACxE,mBAAmB,EAAG,CAAC,IAAI,CAAC,oBAAoB,EAAE,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,mBAAmB,CAAC;QAC1H,sBAAsB,EAAI,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,mBAAmB,CAAC;QACnK,eAAe,EAAG,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,kBAAkB,CAAC;KACtE,CAAC;;AA1BJ,kDA4BC;AAED,gBAAgB;AAChB,MAAa,6BAA8B,SAAQ,6BAA6B;IAEpE,OAAO,CAAuB;IAC9B,cAAc,CAA0B;IAElC,iBAAiB,KAA6C,OAAO,KAAK,CAAC,CAAA,CAAC;IACrF,oBAAoB,GAAG,CAAC,CAAC,CAAI,6DAA6D;IAEjG,IAAW,MAAM,KAAgB,OAAO,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,CAAA,CAAC;IAC9E,IAAW,MAAM,CAAC,MAA4B,IAAG,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,CAAA,CAAC;IAExE,IAAW,aAAa,KAAI,OAAO,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAkB,CAAe,CAAC,CAAA,CAAC;IACnF,QAAQ,CAAgB;IAEjD,YAAmB,QAAgC,EAAE,aAAsC,EAAE,YAAwC;QACnI,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;QAEpC,oHAAoH;QACpH,gEAAgE;QAChE,IAAI,YAAY;YACd,IAAI,CAAC,kBAAkB,GAAG,YAAY,CAAC;QACzC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAEzB,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,KAAK,QAAQ,EAAE,CAAC;YACrC,IAAI,CAAC,OAAO,GAAI,IAAI,CAAC,QAA+B,CAAC,MAAM,CAAC;QAC9D,CAAC;IACH,CAAC;IAEM,cAAc,CAAC,OAAiC;QACrD,IAAI,CAAC,OAAO;YACV,OAAO;QAET,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QACtC,IAAI,SAAS,EAAE,CAAC;YACd,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC,YAAY,EAAE,CAAC;QAC/C,CAAC;aAAM,CAAC;YACN,qBAAM,CAAC,QAAQ,CAAC,cAAc,EAAE,4BAA4B,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;IAEO,YAAY;QAClB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,IAAI,SAA+B,CAAC;QACpC,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC9B,MAAM,GAAG,GAAG,MAAiB,CAAC;YAC9B,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;gBACd,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC;YACxB,CAAC;QACH,CAAC;aAAO,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YACtC,MAAM,GAAG,GAAG,MAAiB,CAAC;YAC9B,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;gBACd,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC;YACxB,CAAC;QACH,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,aAAa,CAAC,OAAiC,EAAE,QAAsB;QAC7E,IAAI,QAAQ,KAAK,cAAc,IAAI,QAAQ,KAAK,aAAa,EAAE,CAAC;YAC9D,OAAO,CAAC,WAAW,CAAC,mBAAmB,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;IAEM,gBAAgB,CAAC,OAAiC;QACvD,IAAI,CAAC,OAAO;YACV,OAAO;QAET,gEAAgE;QAChE,IAAI,GAAwB,CAAC;QAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,MAAiB,CAAC;YACnC,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;gBAChB,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC;YACpB,CAAC;QACH,CAAC;aAAM,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YACrC,GAAG,GAAG,IAAI,CAAC,MAAiB,CAAC;QAC/B,CAAC;aAAM,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YACrC,MAAM,GAAG,GAAG,IAAI,CAAC,MAAiB,CAAC;YACnC,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;gBAChB,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC;YACpB,CAAC;QACH,CAAC;QAED,IAAI,GAAG,EAAE,CAAC;YAER,OAAO,CAAC,SAAS,GAAG,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACpD,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS;gBAC3B,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,oBAAoB,CAAC;YACjD,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;gBACd,OAAO,CAAC,WAAW,GAAG,GAAG,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;YACjD,CAAC;YACD,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;gBACd,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;YACzC,CAAC;QACH,CAAC;aAAM,CAAC;YACN,qBAAM,CAAC,QAAQ,CAAC,cAAc,EAAE,8BAA8B,CAAC,CAAC;QAClE,CAAC;IAEH,CAAC;IACD;;;;;;MAME;IACK,gBAAgB,CAAC,OAAiC,EAAE,GAAY,EAAE,CAAS,EAAE,CAAS,EAAE,IAAY;QACzG,MAAM,QAAQ,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC;QAChC,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;YACd,OAAO,CAAC,IAAI,EAAE,CAAC;YACf,OAAO,CAAC,SAAS,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC;YACvB,MAAM,KAAK,GAAG,qBAAK,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAC7C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC9B,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC;QAC3B,CAAC;QAED,IAAI,GAAG,CAAC,KAAK,KAAK,eAAe,EAAE,CAAC;YAElC,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC;YAC7B,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC;YAC7B,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;gBACd,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;gBAC7B,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YACvC,CAAC;YACD,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;gBAChB,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;gBAC/B,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YACzC,CAAC;QAEH,CAAC;aAAM,IAAI,GAAG,CAAC,KAAK,KAAK,eAAe,EAAE,CAAC;YACzC,OAAO,CAAC,SAAS,EAAE,CAAC;YACpB,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,GAAC,GAAG,EAAE,CAAC,EAAE,CAAC,GAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC1C,OAAO,CAAC,SAAS,EAAE,CAAC;YACpB,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;gBACd,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;gBAC7B,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,CAAC;YACD,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;gBAChB,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;gBAC/B,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,CAAC;QACH,CAAC;aAAM,IAAI,GAAG,CAAC,KAAK,KAAK,cAAc,EAAE,CAAC;YACxC,OAAO,CAAC,SAAS,EAAE,CAAC;YACpB,OAAO,CAAC,MAAM,CAAC,CAAC,GAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;YAC9B,OAAO,CAAC,MAAM,CAAC,CAAC,GAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;YAC9B,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAC,QAAQ,CAAC,CAAC;YAC9B,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAC,QAAQ,CAAC,CAAC;YAC9B,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;gBAChB,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;YACjC,CAAC;YACD,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,CAAC;aAAM,IAAI,GAAG,CAAC,KAAK,KAAK,gBAAgB,EAAE,CAAC;YAC1C,OAAO,CAAC,SAAS,EAAE,CAAC;YAEpB,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAC,QAAQ,CAAC,CAAC;YAC9B,OAAO,CAAC,MAAM,CAAC,CAAC,GAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;YAC9B,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAC,QAAQ,CAAC,CAAC;YAC9B,OAAO,CAAC,MAAM,CAAC,CAAC,GAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;YAC9B,OAAO,CAAC,SAAS,EAAE,CAAC;YACpB,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;gBACd,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;gBAC7B,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,CAAC;YACD,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;gBAChB,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;YACjC,CAAC;YACD,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,CAAC;aAAM,IAAI,GAAG,CAAC,KAAK,KAAK,iBAAiB,EAAE,CAAC;YAC3C,OAAO,CAAC,SAAS,EAAE,CAAC;YACpB,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAC,QAAQ,CAAC,CAAC;YAC9B,OAAO,CAAC,MAAM,CAAC,CAAC,GAAC,QAAQ,EAAE,CAAC,GAAC,QAAQ,CAAC,CAAC;YACvC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAC,QAAQ,EAAE,CAAC,GAAC,QAAQ,CAAC,CAAC;YAEvC,OAAO,CAAC,SAAS,EAAE,CAAC;YACpB,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;gBACd,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;gBAC7B,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,CAAC;YACD,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;gBAChB,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;YACjC,CAAC;YACD,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,CAAC;aAAM,IAAG,GAAG,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;YACnC,OAAO,CAAC,SAAS,EAAE,CAAC;YACpB,OAAO,CAAC,MAAM,CAAC,CAAC,GAAC,QAAQ,EAAE,CAAC,GAAC,QAAQ,CAAC,CAAC;YACvC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAC,QAAQ,EAAE,CAAC,GAAC,QAAQ,CAAC,CAAC;YACvC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAC,QAAQ,EAAE,CAAC,GAAC,QAAQ,CAAC,CAAC;YACvC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAC,QAAQ,EAAE,CAAC,GAAC,QAAQ,CAAC,CAAC;YACvC,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;gBAChB,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;YACjC,CAAC;YACD,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,CAAC;QACD,IAAI,GAAG,CAAC,KAAK;YACX,OAAO,CAAC,OAAO,EAAE,CAAC;IACtB,CAAC;IAEM,SAAS,CAAC,OAAiC,EAAE,GAAW,EAAE,GAAW;QAC1E,IAAI,CAAC,OAAO;YACV,OAAO;QAET,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAE3B,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,MAAiB,CAAC;YACnC,MAAM,YAAY,GAAG,GAAG,CAAC,KAAK,CAAC;YAE/B,iDAAiD;YACjD,wEAAwE;YACxE,4EAA4E;YAC5E,MAAM,KAAK,GAAI,GAAG,CAAC,KAAK,CAAC;YACzB,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;YAE1B,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC;YAE7B,4CAA4C;YAC5C,IAAI,KAAK;gBACP,OAAO,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC;YACzB,IAAI,MAAM;gBACR,OAAO,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC;YAE1B,wBAAwB;YACxB,IAAI,GAAG,CAAC,OAAO;gBACb,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC;YACzB,IAAI,GAAG,CAAC,OAAO;gBACb,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC;YAEzB,MAAM,EAAE,GAAG,GAAG,GAAG,OAAO,CAAC;YACzB,MAAM,EAAE,GAAG,GAAG,GAAG,OAAO,CAAC;YAEzB,IAAI,YAAY,EAAE,CAAC;gBACjB,OAAO,CAAC,IAAI,EAAE,CAAC;gBACf,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;gBAC5B,MAAM,KAAK,GAAG,qBAAK,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;gBAChD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBAC9B,OAAO,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;YAChC,CAAC;YAED,IAAI,KAAK,IAAI,MAAM,EAAE,CAAC;gBACpB,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;YACtD,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;YACvC,CAAC;YAED,IAAI,YAAY;gBACd,OAAO,CAAC,OAAO,EAAE,CAAC;QAEtB,CAAC;aAAM,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YACrC,MAAM,GAAG,GAAG,IAAI,CAAC,MAAiB,CAAC;YAEnC,IAAI,OAAO,GAAG,CAAC,CAAC;YAChB,IAAI,OAAO,GAAG,CAAC,CAAC;YAEhB,IAAI,GAAG,CAAC,OAAO;gBACb,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC;YAEzB,IAAI,GAAG,CAAC,OAAO;gBACb,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC;YAEzB,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,GAAG,OAAO,EAAE,GAAG,GAAG,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;QAC9E,CAAC;IACH,CAAC;CACF;AAzQD,sEAyQC;AAED,gBAAgB;AAChB,MAAa,kCAAmC,SAAQ,6BAA6B;IACnE,iBAAiB,KAA6C,OAAO,IAAI,CAAC,CAAA,CAAC;IACjF,wBAAwB,CAAoC;IAC5D,UAAU,CAA0B;IACtC,oBAAoB,CAAuB;IAEnD,IAAoB,aAAa,KAAI,OAAO,IAAI,CAAC,oBAAoB,IAAI,KAAK,CAAC,aAAa,CAAC,CAAA,CAAC;IAE9F,IAAW,cAAc;QACvB,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM;YACxB,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;;YAEhC,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,YAAoB,QAAiC,EAAE,aAAsC,EAAE,YAAwC;QACrI,KAAK,CAAC,QAAQ,EAAE,aAAa,EAAE,YAAY,CAAC,CAAC;QAE7C,IAAI,CAAC,UAAU,GAAI,IAAI,CAAC,QAAoC,CAAC;QAC7D,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;IAC5D,CAAC;IAEM,0BAA0B,CAAC,UAAkC;QAClE,IAAI,CAAC,wBAAwB,GAAG,UAAU,CAAC;QAE3C,IAAI,gBAAgB,GAAG,KAAK,CAAC;QAC7B,IAAI,IAAI,CAAC,wBAAwB,EAAE,CAAC;YAClC,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;gBAE1G,MAAM,UAAU,GAAG,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;gBAEzE,IAAI,UAAU,KAAK,IAAI,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;oBACpD,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE,CAAC;wBACrD,4DAA4D;wBAC5D,sGAAsG;wBACpG,IAAI,GAAG,CAAC,KAAK,KAAM,UAAU,CAAC,QAAQ,EAAE,EAAE,CAAC;4BACzC,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAE;4BAC1B,gBAAgB,GAAG,IAAI,CAAC;4BACxB,MAAM;wBACR,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,iEAAiE;QACjE,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtB,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;QAC1B,CAAC;IACH,CAAC;CACF;AAlDD,gFAkDC;AAED,gBAAgB;AAChB,MAAa,kCAAmC,SAAQ,6BAA6B;IACnE,iBAAiB,KAA6C,OAAO,IAAI,CAAC,CAAA,CAAC;IACjF,wBAAwB,CAAoC;IAC5D,UAAU,CAA0B;IACtC,oBAAoB,CAAuB;IAEnD,IAAoB,aAAa,KAAI,OAAO,IAAI,CAAC,oBAAoB,IAAI,KAAK,CAAC,aAAa,CAAC,CAAA,CAAC;IAE9F,IAAW,cAAc;QACvB,IAAI,IAAI,CAAC,UAAU;YACjB,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;;YAE/B,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,YAAmB,QAAiC,EAAE,aAAsC,EAAE,YAAwC;QACpI,KAAK,CAAC,QAAQ,EAAE,aAAa,EAAE,YAAY,CAAC,CAAC;QAE7C,IAAI,CAAC,UAAU,GAAI,IAAI,CAAC,QAAoC,CAAC;QAC7D,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;IAC5D,CAAC;IAEM,0BAA0B,CAAC,UAAkC;QAClE,IAAI,CAAC,wBAAwB,GAAG,UAAU,CAAC;QAE3C,MAAM,gBAAgB,GAAG,KAAK,CAAC;QAC/B,IAAI,IAAI,CAAC,wBAAwB,EAAE,CAAC;YAClC,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;gBAE/E,MAAM,UAAU,GAAG,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;gBAExE,IAAI,UAAU,KAAK,IAAI,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;oBACpD,IAAI,eAAiC,CAAC;oBACtC,IAAI,eAAe,GAAG,CAAC,CAAC;oBACxB,GAAG,CAAC;wBACF,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC;wBACtE,IAAI,YAAY,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;4BAC7C,eAAe,GAAG,YAAY,CAAC,aAAa,CAAC;wBAC/C,CAAC;6BAAM,IAAI,YAAY,CAAC,aAAa,KAAK,SAAS,IAAI,eAAe,GAAG,CAAC,EAAE,CAAC;4BAC3E,eAAe,GAAG,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,eAAe,GAAC,CAAC,CAAC,CAAC,aAAa,CAAC;wBACrF,CAAC;6BAAM,CAAC;4BACN,eAAe,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;wBAC7C,CAAC;wBAED,IAAK,UAAU,IAAK,eAAe;+BAC9B,UAAU,IAAK,YAAY,CAAC,aAAa,EAAE,CAAC;4BAC/C,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;4BAClC,OAAO;wBACT,CAAC;oBACH,CAAC,QACM,EAAE,eAAe,GAAG,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,MAAM,EAAE;gBACrE,CAAC;YACH,CAAC;YAED,iEAAiE;YACjE,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACtB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC;YACnC,CAAC;QACH,CAAC;IACH,CAAC;CACF;AA5DD,gFA4DC","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 { FeatureAttributeDrivenSymbology, FeatureSymbologyRenderer } from \"@itwin/core-frontend\";\nimport { Angle } from \"@itwin/core-geometry\";\nimport { FeatureDefaultSymbology } from \"../Feature/FeatureSymbology\";\nimport { ArcGisFeatureGeometryType } from \"./ArcGisFeatureQuery\";\n\n/** @internal */\nconst loggerCategory = \"MapLayersFormats.ArcGISFeature\";\n\n/** @internal */\nexport type ArcGisSymbologyRendererType = \"simple\" | \"attributeDriven\";\n\n/** Feature Symbology renderer applicable to an HTML 2D Canvas\n * @internal\n */\nexport interface FeatureSymbologyCanvasRenderer extends FeatureSymbologyRenderer {\n applyFillStyle(context: CanvasRenderingContext2D): void;\n applyStrokeStyle(context: CanvasRenderingContext2D): void;\n drawPoint(context: CanvasRenderingContext2D, ptX: number, ptY: number): void;\n}\n\n/** @internal */\nexport abstract class ArcGisSymbologyCanvasRenderer implements FeatureSymbologyCanvasRenderer {\n\n public abstract readonly renderer?: EsriRenderer;\n\n public abstract get symbol(): EsriSymbol;\n public abstract set symbol(symbol: EsriSymbol|undefined);\n public abstract get defaultSymbol(): EsriSymbol;\n public activeGeometryType: string = \"\";\n public abstract isAttributeDriven(): this is FeatureAttributeDrivenSymbology;\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: FeatureDefaultSymbology, geometryType?: ArcGisFeatureGeometryType): ArcGisSymbologyCanvasRenderer {\n if (renderer?.type === \"uniqueValue\") {\n return new ArcGisUniqueValueSymbologyRenderer(renderer as EsriUniqueValueRenderer, defaultSymbol, geometryType);\n } else if (renderer?.type === \"classBreaks\") {\n return new ArcGisClassBreaksSymbologyRenderer(renderer as EsriClassBreaksRenderer, defaultSymbol, geometryType);\n } else {\n return new ArcGisSimpleSymbologyRenderer(renderer, defaultSymbol, geometryType);\n }\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 ArcGisSymbologyCanvasRenderer {\n\n protected _symbol: EsriSymbol|undefined;\n protected _defaultSymbol: FeatureDefaultSymbology;\n\n public override isAttributeDriven(): this is FeatureAttributeDrivenSymbology {return false;}\n public lineWidthScaleFactor = 2; // This is value is empirical, this might need to be adjusted\n\n public get symbol(): EsriSymbol {return (this._symbol ?? this.defaultSymbol);}\n public set symbol(symbol: EsriSymbol|undefined) {this._symbol = symbol;}\n\n public get defaultSymbol() {return this._defaultSymbol.getSymbology(this.activeGeometryType) as EsriSymbol;}\n public override readonly renderer?: EsriRenderer;\n\n public constructor(renderer: EsriRenderer|undefined, defaultSymbol: FeatureDefaultSymbology, geometryType?: ArcGisFeatureGeometryType) {\n super();\n this._defaultSymbol = defaultSymbol;\n\n // ArcGIS service normally advertise upfront he geometry of all features. It's always possible to opt-out, but then\n // you will have to set the activeGeometryType before rendering.\n if (geometryType)\n this.activeGeometryType = geometryType;\n this.renderer = renderer;\n\n if (this.renderer?.type === \"simple\") {\n this._symbol = (this.renderer as EsriSimpleRenderer).symbol;\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 const symbol = this.symbol;\n let fillColor: ColorDef | undefined;\n if (symbol.type === \"esriSFS\") {\n const sfs = symbol as EsriSFS;\n if (sfs.color) {\n fillColor = sfs.color;\n }\n } else if (symbol.type === \"esriSMS\") {\n const sms = 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 const symbol = this.symbol;\n if (symbol.type === \"esriSFS\") {\n const sfs = this.symbol as EsriSFS;\n if (sfs.outline) {\n sls = sfs.outline;\n }\n } else if (symbol.type === \"esriSLS\") {\n sls = this.symbol as EsriSLS;\n } else if (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 (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 const symbol = this.symbol;\n\n if (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 const width = pms.width;\n const height = pms.height;\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 (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 FeatureAttributeDrivenSymbology {\n public override isAttributeDriven(): this is FeatureAttributeDrivenSymbology {return true;}\n protected _activeFeatureAttributes: {[key: string]: any} | undefined;\n protected uvRenderer: EsriUniqueValueRenderer;\n private _defaultRenderSymbol: EsriSymbol|undefined;\n\n public override get defaultSymbol() {return this._defaultRenderSymbol ?? super.defaultSymbol;}\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: FeatureDefaultSymbology, geometryType?: ArcGisFeatureGeometryType) {\n super(renderer, defaultSymbol, geometryType);\n\n this.uvRenderer = (this.renderer as EsriUniqueValueRenderer);\n this._defaultRenderSymbol = this.uvRenderer.defaultSymbol;\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 = undefined;\n }\n }\n}\n\n/** @internal */\nexport class ArcGisClassBreaksSymbologyRenderer extends ArcGisSimpleSymbologyRenderer implements FeatureAttributeDrivenSymbology {\n public override isAttributeDriven(): this is FeatureAttributeDrivenSymbology {return true;}\n protected _activeFeatureAttributes: {[key: string]: any} | undefined;\n protected cbRenderer: EsriClassBreaksRenderer;\n private _defaultRenderSymbol: EsriSymbol|undefined;\n\n public override get defaultSymbol() {return this._defaultRenderSymbol ?? super.defaultSymbol;}\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: FeatureDefaultSymbology, geometryType?: ArcGisFeatureGeometryType) {\n super(renderer, defaultSymbol, geometryType);\n\n this.cbRenderer = (this.renderer as EsriClassBreaksRenderer);\n this._defaultRenderSymbol = this.cbRenderer.defaultSymbol;\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"]}
|
|
@@ -39,6 +39,7 @@ class EsriSymbol extends FeatureSymbology_1.FeatureSymbology {
|
|
|
39
39
|
exports.EsriSymbol = EsriSymbol;
|
|
40
40
|
/** @internal */
|
|
41
41
|
class EsriSLS {
|
|
42
|
+
props;
|
|
42
43
|
get color() { return colorFromArray(this.props.color); }
|
|
43
44
|
get type() { return this.props.type; }
|
|
44
45
|
get width() { return this.props.width; }
|
|
@@ -53,6 +54,8 @@ class EsriSLS {
|
|
|
53
54
|
exports.EsriSLS = EsriSLS;
|
|
54
55
|
/** @internal */
|
|
55
56
|
class EsriPMS {
|
|
57
|
+
props;
|
|
58
|
+
_image;
|
|
56
59
|
get type() { return this.props.type; }
|
|
57
60
|
get url() { return this.props.url; }
|
|
58
61
|
get imageData() { return this.props.imageData; }
|
|
@@ -92,6 +95,8 @@ class EsriPMS {
|
|
|
92
95
|
exports.EsriPMS = EsriPMS;
|
|
93
96
|
/** @internal */
|
|
94
97
|
class EsriSMS {
|
|
98
|
+
props;
|
|
99
|
+
_outline;
|
|
95
100
|
get angle() { return this.props.angle; }
|
|
96
101
|
get color() { return colorFromArray(this.props.color); }
|
|
97
102
|
get outline() { return this._outline; }
|
|
@@ -112,6 +117,8 @@ class EsriSMS {
|
|
|
112
117
|
exports.EsriSMS = EsriSMS;
|
|
113
118
|
/** @internal */
|
|
114
119
|
class EsriSFS {
|
|
120
|
+
props;
|
|
121
|
+
_outline;
|
|
115
122
|
get color() { return colorFromArray(this.props.color); }
|
|
116
123
|
get type() { return this.props.type; }
|
|
117
124
|
get style() { return this.props.style; }
|
|
@@ -128,6 +135,10 @@ class EsriSFS {
|
|
|
128
135
|
exports.EsriSFS = EsriSFS;
|
|
129
136
|
/** @internal */
|
|
130
137
|
class EsriUniqueValueInfo {
|
|
138
|
+
value;
|
|
139
|
+
label;
|
|
140
|
+
description;
|
|
141
|
+
symbol;
|
|
131
142
|
constructor(json) {
|
|
132
143
|
this.value = json.value;
|
|
133
144
|
this.label = json.label;
|
|
@@ -141,6 +152,11 @@ class EsriUniqueValueInfo {
|
|
|
141
152
|
exports.EsriUniqueValueInfo = EsriUniqueValueInfo;
|
|
142
153
|
/** @internal */
|
|
143
154
|
class EsriClassBreaksValueInfo {
|
|
155
|
+
classMaxValue;
|
|
156
|
+
classMinValue;
|
|
157
|
+
label;
|
|
158
|
+
description;
|
|
159
|
+
symbol;
|
|
144
160
|
constructor(json) {
|
|
145
161
|
this.classMaxValue = json.classMaxValue;
|
|
146
162
|
this.classMinValue = json.classMinValue;
|
|
@@ -170,9 +186,10 @@ class EsriRenderer {
|
|
|
170
186
|
exports.EsriRenderer = EsriRenderer;
|
|
171
187
|
/** @internal */
|
|
172
188
|
class EsriSimpleRenderer extends EsriRenderer {
|
|
189
|
+
type = "simple";
|
|
190
|
+
symbol;
|
|
173
191
|
constructor(json) {
|
|
174
192
|
super();
|
|
175
|
-
this.type = "simple";
|
|
176
193
|
this.type = json.type;
|
|
177
194
|
this.symbol = EsriSymbol.fromJSON(json.symbol);
|
|
178
195
|
}
|
|
@@ -190,6 +207,10 @@ class EsriSimpleRenderer extends EsriRenderer {
|
|
|
190
207
|
exports.EsriSimpleRenderer = EsriSimpleRenderer;
|
|
191
208
|
/** @internal */
|
|
192
209
|
class EsriUniqueValueRenderer extends EsriRenderer {
|
|
210
|
+
_props;
|
|
211
|
+
type = "uniqueValue";
|
|
212
|
+
defaultSymbol;
|
|
213
|
+
uniqueValueInfos = [];
|
|
193
214
|
get fields() {
|
|
194
215
|
const fields = [];
|
|
195
216
|
if (this.field1)
|
|
@@ -205,8 +226,6 @@ class EsriUniqueValueRenderer extends EsriRenderer {
|
|
|
205
226
|
get field3() { return this._props.field3 ?? undefined; }
|
|
206
227
|
constructor(json) {
|
|
207
228
|
super();
|
|
208
|
-
this.type = "uniqueValue";
|
|
209
|
-
this.uniqueValueInfos = [];
|
|
210
229
|
if (json.defaultSymbol)
|
|
211
230
|
this.defaultSymbol = EsriSymbol.fromJSON(json.defaultSymbol);
|
|
212
231
|
for (const uvi of json.uniqueValueInfos) {
|
|
@@ -233,7 +252,11 @@ class EsriUniqueValueRenderer extends EsriRenderer {
|
|
|
233
252
|
exports.EsriUniqueValueRenderer = EsriUniqueValueRenderer;
|
|
234
253
|
/** @internal */
|
|
235
254
|
class EsriClassBreaksRenderer extends EsriRenderer {
|
|
255
|
+
_props;
|
|
256
|
+
type = "classBreaks";
|
|
257
|
+
defaultSymbol;
|
|
236
258
|
get classificationMethod() { return this._props.classificationMethod; }
|
|
259
|
+
classBreakInfos = [];
|
|
237
260
|
get fields() {
|
|
238
261
|
if (this.field)
|
|
239
262
|
return [this.field];
|
|
@@ -243,8 +266,6 @@ class EsriClassBreaksRenderer extends EsriRenderer {
|
|
|
243
266
|
get minValue() { return this._props.minValue ?? 0; }
|
|
244
267
|
constructor(json) {
|
|
245
268
|
super();
|
|
246
|
-
this.type = "classBreaks";
|
|
247
|
-
this.classBreakInfos = [];
|
|
248
269
|
if (json.defaultSymbol)
|
|
249
270
|
this.defaultSymbol = EsriSymbol.fromJSON(json.defaultSymbol);
|
|
250
271
|
for (const cbi of json.classBreakInfos) {
|