@itwin/map-layers-formats 4.6.0-dev.17 → 4.6.0-dev.19

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.
Files changed (158) hide show
  1. package/lib/cjs/ArcGisFeature/ArcGisFeatureFormat.js.map +1 -1
  2. package/lib/cjs/ArcGisFeature/ArcGisFeatureProvider.d.ts +15 -6
  3. package/lib/cjs/ArcGisFeature/ArcGisFeatureProvider.d.ts.map +1 -1
  4. package/lib/cjs/ArcGisFeature/ArcGisFeatureProvider.js +61 -51
  5. package/lib/cjs/ArcGisFeature/ArcGisFeatureProvider.js.map +1 -1
  6. package/lib/cjs/ArcGisFeature/ArcGisFeatureQuery.js.map +1 -1
  7. package/lib/cjs/ArcGisFeature/ArcGisFeatureReader.d.ts +7 -11
  8. package/lib/cjs/ArcGisFeature/ArcGisFeatureReader.d.ts.map +1 -1
  9. package/lib/cjs/ArcGisFeature/ArcGisFeatureReader.js +3 -19
  10. package/lib/cjs/ArcGisFeature/ArcGisFeatureReader.js.map +1 -1
  11. package/lib/cjs/ArcGisFeature/ArcGisFeatureResponse.js.map +1 -1
  12. package/lib/cjs/ArcGisFeature/ArcGisJsonFeatureReader.d.ts +3 -3
  13. package/lib/cjs/ArcGisFeature/ArcGisJsonFeatureReader.d.ts.map +1 -1
  14. package/lib/cjs/ArcGisFeature/ArcGisJsonFeatureReader.js +3 -4
  15. package/lib/cjs/ArcGisFeature/ArcGisJsonFeatureReader.js.map +1 -1
  16. package/lib/cjs/ArcGisFeature/ArcGisPbfFeatureReader.d.ts +3 -3
  17. package/lib/cjs/ArcGisFeature/ArcGisPbfFeatureReader.d.ts.map +1 -1
  18. package/lib/cjs/ArcGisFeature/ArcGisPbfFeatureReader.js +2 -3
  19. package/lib/cjs/ArcGisFeature/ArcGisPbfFeatureReader.js.map +1 -1
  20. package/lib/cjs/ArcGisFeature/ArcGisSymbologyRenderer.d.ts +35 -15
  21. package/lib/cjs/ArcGisFeature/ArcGisSymbologyRenderer.d.ts.map +1 -1
  22. package/lib/cjs/ArcGisFeature/ArcGisSymbologyRenderer.js +53 -47
  23. package/lib/cjs/ArcGisFeature/ArcGisSymbologyRenderer.js.map +1 -1
  24. package/lib/cjs/ArcGisFeature/EsriSymbology.d.ts +2 -1
  25. package/lib/cjs/ArcGisFeature/EsriSymbology.d.ts.map +1 -1
  26. package/lib/cjs/ArcGisFeature/EsriSymbology.js +2 -1
  27. package/lib/cjs/ArcGisFeature/EsriSymbology.js.map +1 -1
  28. package/lib/cjs/ArcGisFeature/esriPBuffer.gen.js.map +1 -1
  29. package/lib/cjs/Feature/DefaultMarkerIcon.d.ts +10 -0
  30. package/lib/cjs/Feature/DefaultMarkerIcon.d.ts.map +1 -0
  31. package/lib/cjs/Feature/DefaultMarkerIcon.js +31 -0
  32. package/lib/cjs/Feature/DefaultMarkerIcon.js.map +1 -0
  33. package/lib/cjs/Feature/FeatureCanvasRenderer.d.ts +20 -0
  34. package/lib/cjs/Feature/FeatureCanvasRenderer.d.ts.map +1 -0
  35. package/lib/cjs/{ArcGisFeature/ArcGisCanvasRenderer.js → Feature/FeatureCanvasRenderer.js} +7 -6
  36. package/lib/cjs/Feature/FeatureCanvasRenderer.js.map +1 -0
  37. package/lib/cjs/Feature/FeatureInfoReader.d.ts +11 -0
  38. package/lib/cjs/Feature/FeatureInfoReader.d.ts.map +1 -0
  39. package/lib/cjs/Feature/FeatureInfoReader.js +34 -0
  40. package/lib/cjs/Feature/FeatureInfoReader.js.map +1 -0
  41. package/lib/cjs/Feature/FeatureSymbology.d.ts +8 -0
  42. package/lib/cjs/Feature/FeatureSymbology.d.ts.map +1 -0
  43. package/lib/cjs/Feature/FeatureSymbology.js +12 -0
  44. package/lib/cjs/Feature/FeatureSymbology.js.map +1 -0
  45. package/lib/cjs/Feature/RandomMapColor.d.ts +8 -0
  46. package/lib/cjs/Feature/RandomMapColor.d.ts.map +1 -0
  47. package/lib/cjs/Feature/RandomMapColor.js +29 -0
  48. package/lib/cjs/Feature/RandomMapColor.js.map +1 -0
  49. package/lib/cjs/GeoJSON/GeoJSONGeometry.d.ts +18 -0
  50. package/lib/cjs/GeoJSON/GeoJSONGeometry.d.ts.map +1 -0
  51. package/lib/cjs/GeoJSON/GeoJSONGeometry.js +11 -0
  52. package/lib/cjs/GeoJSON/GeoJSONGeometry.js.map +1 -0
  53. package/lib/cjs/GeoJSON/GeoJSONGeometryReader.d.ts +11 -0
  54. package/lib/cjs/GeoJSON/GeoJSONGeometryReader.d.ts.map +1 -0
  55. package/lib/cjs/GeoJSON/GeoJSONGeometryReader.js +83 -0
  56. package/lib/cjs/GeoJSON/GeoJSONGeometryReader.js.map +1 -0
  57. package/lib/cjs/Icons/MapInfoIcon.js.map +1 -1
  58. package/lib/cjs/OgcApiFeatures/OgcApiFeaturesFormat.d.ts +9 -0
  59. package/lib/cjs/OgcApiFeatures/OgcApiFeaturesFormat.d.ts.map +1 -0
  60. package/lib/cjs/OgcApiFeatures/OgcApiFeaturesFormat.js +94 -0
  61. package/lib/cjs/OgcApiFeatures/OgcApiFeaturesFormat.js.map +1 -0
  62. package/lib/cjs/OgcApiFeatures/OgcApiFeaturesProvider.d.ts +54 -0
  63. package/lib/cjs/OgcApiFeatures/OgcApiFeaturesProvider.d.ts.map +1 -0
  64. package/lib/cjs/OgcApiFeatures/OgcApiFeaturesProvider.js +477 -0
  65. package/lib/cjs/OgcApiFeatures/OgcApiFeaturesProvider.js.map +1 -0
  66. package/lib/cjs/OgcApiFeatures/OgcApiFeaturesReader.d.ts +23 -0
  67. package/lib/cjs/OgcApiFeatures/OgcApiFeaturesReader.d.ts.map +1 -0
  68. package/lib/cjs/OgcApiFeatures/OgcApiFeaturesReader.js +139 -0
  69. package/lib/cjs/OgcApiFeatures/OgcApiFeaturesReader.js.map +1 -0
  70. package/lib/cjs/Tools/MapFeatureInfoDecorator.js.map +1 -1
  71. package/lib/cjs/Tools/MapFeatureInfoTool.js.map +1 -1
  72. package/lib/cjs/map-layers-formats.js.map +1 -1
  73. package/lib/cjs/mapLayersFormats.d.ts.map +1 -1
  74. package/lib/cjs/mapLayersFormats.js +4 -1
  75. package/lib/cjs/mapLayersFormats.js.map +1 -1
  76. package/lib/esm/ArcGisFeature/ArcGisFeatureFormat.js.map +1 -1
  77. package/lib/esm/ArcGisFeature/ArcGisFeatureProvider.d.ts +15 -6
  78. package/lib/esm/ArcGisFeature/ArcGisFeatureProvider.d.ts.map +1 -1
  79. package/lib/esm/ArcGisFeature/ArcGisFeatureProvider.js +61 -51
  80. package/lib/esm/ArcGisFeature/ArcGisFeatureProvider.js.map +1 -1
  81. package/lib/esm/ArcGisFeature/ArcGisFeatureQuery.js.map +1 -1
  82. package/lib/esm/ArcGisFeature/ArcGisFeatureReader.d.ts +7 -11
  83. package/lib/esm/ArcGisFeature/ArcGisFeatureReader.d.ts.map +1 -1
  84. package/lib/esm/ArcGisFeature/ArcGisFeatureReader.js +3 -19
  85. package/lib/esm/ArcGisFeature/ArcGisFeatureReader.js.map +1 -1
  86. package/lib/esm/ArcGisFeature/ArcGisFeatureResponse.js.map +1 -1
  87. package/lib/esm/ArcGisFeature/ArcGisJsonFeatureReader.d.ts +3 -3
  88. package/lib/esm/ArcGisFeature/ArcGisJsonFeatureReader.d.ts.map +1 -1
  89. package/lib/esm/ArcGisFeature/ArcGisJsonFeatureReader.js +3 -4
  90. package/lib/esm/ArcGisFeature/ArcGisJsonFeatureReader.js.map +1 -1
  91. package/lib/esm/ArcGisFeature/ArcGisPbfFeatureReader.d.ts +3 -3
  92. package/lib/esm/ArcGisFeature/ArcGisPbfFeatureReader.d.ts.map +1 -1
  93. package/lib/esm/ArcGisFeature/ArcGisPbfFeatureReader.js +2 -3
  94. package/lib/esm/ArcGisFeature/ArcGisPbfFeatureReader.js.map +1 -1
  95. package/lib/esm/ArcGisFeature/ArcGisSymbologyRenderer.d.ts +35 -15
  96. package/lib/esm/ArcGisFeature/ArcGisSymbologyRenderer.d.ts.map +1 -1
  97. package/lib/esm/ArcGisFeature/ArcGisSymbologyRenderer.js +51 -45
  98. package/lib/esm/ArcGisFeature/ArcGisSymbologyRenderer.js.map +1 -1
  99. package/lib/esm/ArcGisFeature/EsriSymbology.d.ts +2 -1
  100. package/lib/esm/ArcGisFeature/EsriSymbology.d.ts.map +1 -1
  101. package/lib/esm/ArcGisFeature/EsriSymbology.js +2 -1
  102. package/lib/esm/ArcGisFeature/EsriSymbology.js.map +1 -1
  103. package/lib/esm/ArcGisFeature/esriPBuffer.gen.js.map +1 -1
  104. package/lib/esm/Feature/DefaultMarkerIcon.d.ts +10 -0
  105. package/lib/esm/Feature/DefaultMarkerIcon.d.ts.map +1 -0
  106. package/lib/esm/Feature/DefaultMarkerIcon.js +27 -0
  107. package/lib/esm/Feature/DefaultMarkerIcon.js.map +1 -0
  108. package/lib/esm/Feature/FeatureCanvasRenderer.d.ts +20 -0
  109. package/lib/esm/Feature/FeatureCanvasRenderer.d.ts.map +1 -0
  110. package/lib/esm/{ArcGisFeature/ArcGisCanvasRenderer.js → Feature/FeatureCanvasRenderer.js} +6 -5
  111. package/lib/esm/Feature/FeatureCanvasRenderer.js.map +1 -0
  112. package/lib/esm/Feature/FeatureInfoReader.d.ts +11 -0
  113. package/lib/esm/Feature/FeatureInfoReader.d.ts.map +1 -0
  114. package/lib/esm/Feature/FeatureInfoReader.js +30 -0
  115. package/lib/esm/Feature/FeatureInfoReader.js.map +1 -0
  116. package/lib/esm/Feature/FeatureSymbology.d.ts +8 -0
  117. package/lib/esm/Feature/FeatureSymbology.d.ts.map +1 -0
  118. package/lib/esm/Feature/FeatureSymbology.js +8 -0
  119. package/lib/esm/Feature/FeatureSymbology.js.map +1 -0
  120. package/lib/esm/Feature/RandomMapColor.d.ts +8 -0
  121. package/lib/esm/Feature/RandomMapColor.d.ts.map +1 -0
  122. package/lib/esm/Feature/RandomMapColor.js +26 -0
  123. package/lib/esm/Feature/RandomMapColor.js.map +1 -0
  124. package/lib/esm/GeoJSON/GeoJSONGeometry.d.ts +18 -0
  125. package/lib/esm/GeoJSON/GeoJSONGeometry.d.ts.map +1 -0
  126. package/lib/esm/GeoJSON/GeoJSONGeometry.js +7 -0
  127. package/lib/esm/GeoJSON/GeoJSONGeometry.js.map +1 -0
  128. package/lib/esm/GeoJSON/GeoJSONGeometryReader.d.ts +11 -0
  129. package/lib/esm/GeoJSON/GeoJSONGeometryReader.d.ts.map +1 -0
  130. package/lib/esm/GeoJSON/GeoJSONGeometryReader.js +79 -0
  131. package/lib/esm/GeoJSON/GeoJSONGeometryReader.js.map +1 -0
  132. package/lib/esm/Icons/MapInfoIcon.js.map +1 -1
  133. package/lib/esm/OgcApiFeatures/OgcApiFeaturesFormat.d.ts +9 -0
  134. package/lib/esm/OgcApiFeatures/OgcApiFeaturesFormat.d.ts.map +1 -0
  135. package/lib/esm/OgcApiFeatures/OgcApiFeaturesFormat.js +91 -0
  136. package/lib/esm/OgcApiFeatures/OgcApiFeaturesFormat.js.map +1 -0
  137. package/lib/esm/OgcApiFeatures/OgcApiFeaturesProvider.d.ts +54 -0
  138. package/lib/esm/OgcApiFeatures/OgcApiFeaturesProvider.d.ts.map +1 -0
  139. package/lib/esm/OgcApiFeatures/OgcApiFeaturesProvider.js +473 -0
  140. package/lib/esm/OgcApiFeatures/OgcApiFeaturesProvider.js.map +1 -0
  141. package/lib/esm/OgcApiFeatures/OgcApiFeaturesReader.d.ts +23 -0
  142. package/lib/esm/OgcApiFeatures/OgcApiFeaturesReader.d.ts.map +1 -0
  143. package/lib/esm/OgcApiFeatures/OgcApiFeaturesReader.js +135 -0
  144. package/lib/esm/OgcApiFeatures/OgcApiFeaturesReader.js.map +1 -0
  145. package/lib/esm/Tools/MapFeatureInfoDecorator.js.map +1 -1
  146. package/lib/esm/Tools/MapFeatureInfoTool.js.map +1 -1
  147. package/lib/esm/map-layers-formats.js.map +1 -1
  148. package/lib/esm/mapLayersFormats.d.ts.map +1 -1
  149. package/lib/esm/mapLayersFormats.js +4 -1
  150. package/lib/esm/mapLayersFormats.js.map +1 -1
  151. package/lib/public/locales/en/mapLayersFormats.json +18 -18
  152. package/package.json +15 -13
  153. package/lib/cjs/ArcGisFeature/ArcGisCanvasRenderer.d.ts +0 -19
  154. package/lib/cjs/ArcGisFeature/ArcGisCanvasRenderer.d.ts.map +0 -1
  155. package/lib/cjs/ArcGisFeature/ArcGisCanvasRenderer.js.map +0 -1
  156. package/lib/esm/ArcGisFeature/ArcGisCanvasRenderer.d.ts +0 -19
  157. package/lib/esm/ArcGisFeature/ArcGisCanvasRenderer.d.ts.map +0 -1
  158. package/lib/esm/ArcGisFeature/ArcGisCanvasRenderer.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"ArcGisJsonFeatureReader.d.ts","sourceRoot":"","sources":["../../../src/ArcGisFeature/ArcGisJsonFeatureReader.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAA4D,sBAAsB,EAAE,sBAAsB,EAA6C,mBAAmB,EAAyB,MAAM,sBAAsB,CAAC;AACvO,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAmB,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE9E,gBAAgB;AAChB,qBAAa,uBAAwB,SAAQ,uBAAuB;IAC3D,SAAS,EAAE,SAAS,GAAG,SAAS,CAAC;gBAErB,QAAQ,EAAE,qBAAqB,EAAE,aAAa,EAAE,GAAG;IAKtE,OAAO,CAAC,wBAAwB;IAcnB,aAAa,CAAC,QAAQ,EAAE,kBAAkB,EAAE,QAAQ,EAAE,sBAAsB;IAkB5E,eAAe,CAAC,QAAQ,EAAE,kBAAkB,EAAE,YAAY,EAAE,mBAAmB,EAAE,EAAE,QAAQ,CAAC,EAAE,sBAAsB;CAoGlI"}
1
+ {"version":3,"file":"ArcGisJsonFeatureReader.d.ts","sourceRoot":"","sources":["../../../src/ArcGisFeature/ArcGisJsonFeatureReader.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAA6D,uBAAuB,EAAE,wBAAwB,EAA6C,mBAAmB,EAAyB,MAAM,sBAAsB,CAAC;AAC3O,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAmB,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE9E,gBAAgB;AAChB,qBAAa,uBAAwB,SAAQ,uBAAuB;IAC3D,SAAS,EAAE,SAAS,GAAG,SAAS,CAAC;gBAErB,QAAQ,EAAE,qBAAqB,EAAE,aAAa,EAAE,GAAG;IAKtE,OAAO,CAAC,wBAAwB;IAcnB,aAAa,CAAC,QAAQ,EAAE,kBAAkB,EAAE,QAAQ,EAAE,uBAAuB;IAgB7E,eAAe,CAAC,QAAQ,EAAE,kBAAkB,EAAE,YAAY,EAAE,mBAAmB,EAAE,EAAE,QAAQ,CAAC,EAAE,wBAAwB;CAoGpI"}
@@ -26,12 +26,11 @@ export class ArcGisJsonFeatureReader extends ArcGisBaseFeatureReader {
26
26
  async readAndRender(response, renderer) {
27
27
  const responseObj = response.data;
28
28
  if (responseObj.geometryType) {
29
- const attrSymbology = renderer.attributeSymbology;
30
29
  const geomReader = new ArcGisGeometryReaderJSON(responseObj.geometryType, renderer, renderer.transform === undefined);
31
30
  for (const feature of responseObj.features) {
32
- if (attrSymbology) {
31
+ if (renderer.hasSymbologyRenderer() && renderer.symbolRenderer.isAttributeDriven()) {
33
32
  // Read attributes if needed (attribute driven symbology)
34
- this.applySymbologyAttributes(attrSymbology, feature);
33
+ this.applySymbologyAttributes(renderer.symbolRenderer, feature);
35
34
  }
36
35
  await geomReader.readGeometry(feature.geometry);
37
36
  }
@@ -107,7 +106,7 @@ export class ArcGisJsonFeatureReader extends ArcGisBaseFeatureReader {
107
106
  const feature = { attributes: [] };
108
107
  for (const [key, value] of Object.entries(responseFeature.attributes))
109
108
  feature.attributes?.push(getRecordInfo(key, value));
110
- if (geomReader) {
109
+ if (geomReader && renderer) {
111
110
  await geomReader.readGeometry(responseFeature.geometry);
112
111
  const graphics = renderer.moveGraphics();
113
112
  feature.geometries = graphics.map((graphic) => {
@@ -1 +1 @@
1
- {"version":3,"file":"ArcGisJsonFeatureReader.js","sourceRoot":"","sources":["../../../src/ArcGisFeature/ArcGisJsonFeatureReader.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\nimport { PrimitiveValue, PropertyValueFormat, StandardTypeNames } from \"@itwin/appui-abstract\";\nimport { ImageMapLayerSettings } from \"@itwin/core-common\";\nimport { ArcGisAttributeDrivenSymbology, ArcGisGeometryReaderJSON, ArcGisGeometryRenderer, ArcGisGraphicsRenderer, MapLayerFeature, MapLayerFeatureAttribute, MapLayerFeatureInfo, MapSubLayerFeatureInfo} from \"@itwin/core-frontend\";\nimport { Transform } from \"@itwin/core-geometry\";\nimport { ArcGisBaseFeatureReader } from \"./ArcGisFeatureReader\";\nimport { ArcGisFieldType, ArcGisResponseData } from \"./ArcGisFeatureResponse\";\n\n/** @internal */\nexport class ArcGisJsonFeatureReader extends ArcGisBaseFeatureReader {\n public transform: Transform | undefined;\n\n public constructor(settings: ImageMapLayerSettings, layerMetadata: any) {\n super(settings, layerMetadata);\n\n }\n\n private applySymbologyAttributes(attrSymbology: ArcGisAttributeDrivenSymbology, feature: any) {\n if (attrSymbology && feature) {\n const symbolFields = attrSymbology.rendererFields;\n if (symbolFields && symbolFields.length > 0 && feature.attributes) {\n const featureAttr: {[key: string]: any} = {};\n for (const [attrKey, attrValue] of Object.entries(feature.attributes))\n if (symbolFields.includes(attrKey)) {\n featureAttr[attrKey] = attrValue;\n }\n attrSymbology.setActiveFeatureAttributes(featureAttr);\n }\n }\n }\n\n public async readAndRender(response: ArcGisResponseData, renderer: ArcGisGeometryRenderer) {\n const responseObj = response.data;\n if (responseObj.geometryType) {\n const attrSymbology = renderer.attributeSymbology;\n\n const geomReader = new ArcGisGeometryReaderJSON(responseObj.geometryType, renderer, renderer.transform === undefined);\n\n for (const feature of responseObj.features) {\n if (attrSymbology) {\n // Read attributes if needed (attribute driven symbology)\n this.applySymbologyAttributes(attrSymbology, feature);\n }\n\n await geomReader.readGeometry(feature.geometry);\n }\n }\n }\n\n public async readFeatureInfo(response: ArcGisResponseData, featureInfos: MapLayerFeatureInfo[], renderer?: ArcGisGraphicsRenderer) {\n const responseObj = response.data;\n if (responseObj === undefined || !Array.isArray(responseObj.features))\n return;\n\n const layerInfo: MapLayerFeatureInfo = { layerName: this._settings.name };\n\n // Create a signature index for every field name / type.\n const fieldsType: { [key: string]: ArcGisFieldType } = {};\n for (const fieldInfo of responseObj.fields) {\n fieldsType[fieldInfo.name] = fieldInfo.type;\n }\n\n const getStandardTypeName = (fieldType: ArcGisFieldType) => {\n switch (fieldType) {\n case \"esriFieldTypeInteger\":\n case \"esriFieldTypeSmallInteger\":\n case \"esriFieldTypeOID\":\n return StandardTypeNames.Integer;\n case \"esriFieldTypeDouble\":\n return StandardTypeNames.Double;\n case \"esriFieldTypeSingle\":\n return StandardTypeNames.Float;\n case \"esriFieldTypeDate\":\n return StandardTypeNames.DateTime;\n default:\n return StandardTypeNames.String;\n }\n };\n\n const getRecordInfo = (fieldName: string, value: any): MapLayerFeatureAttribute => {\n const propertyValue: PrimitiveValue = {valueFormat: PropertyValueFormat.Primitive};\n\n if (value === null) {\n value = undefined;\n }\n\n const strValue = `${value}`;\n const fieldType = fieldsType[fieldName];\n switch (fieldType) {\n case \"esriFieldTypeInteger\":\n case \"esriFieldTypeSmallInteger\":\n case \"esriFieldTypeOID\":\n propertyValue.value = value as number;\n break;\n case \"esriFieldTypeDouble\":\n case \"esriFieldTypeSingle\":\n propertyValue.value = this.toFixedWithoutPadding(value);\n break;\n case \"esriFieldTypeDate\":\n propertyValue.value = new Date(value);\n break;\n default:\n if (value !== undefined)\n propertyValue.value = strValue;\n\n break;\n }\n\n const typename = getStandardTypeName(fieldType);\n propertyValue.displayValue = this.getDisplayValue(typename, propertyValue.value);\n\n return {value: propertyValue, property: { name: fieldName, displayLabel: fieldName, typename }};\n };\n\n let geomReader: ArcGisGeometryReaderJSON|undefined;\n if (renderer && responseObj?.geometryType) {\n geomReader = new ArcGisGeometryReaderJSON(responseObj.geometryType, renderer);\n }\n\n // Each feature response represent a single sub-layer, no need to check for existing entry.\n const subLayerInfo: MapSubLayerFeatureInfo = {\n subLayerName: this._layerMetadata.name,\n displayFieldName: this._layerMetadata.name,\n features: [],\n };\n\n // Read all features attributes / geometries\n for (const responseFeature of responseObj.features) {\n const feature: MapLayerFeature = {attributes: []};\n\n for (const [key, value] of Object.entries(responseFeature.attributes))\n feature.attributes?.push(getRecordInfo(key, value));\n\n if (geomReader) {\n await geomReader.readGeometry(responseFeature.geometry);\n const graphics = renderer!.moveGraphics();\n feature.geometries = graphics.map((graphic) => {\n return {graphic};\n });\n }\n subLayerInfo.features.push(feature);\n }\n\n if (layerInfo.subLayerInfos === undefined)\n layerInfo.subLayerInfos = [];\n layerInfo.subLayerInfos.push(subLayerInfo);\n\n featureInfos.push(layerInfo);\n }\n}\n"]}
1
+ {"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,5 +1,5 @@
1
1
  import { esriPBuffer } from "../ArcGisFeature/esriPBuffer.gen";
2
- import { ArcGisGeometryRenderer, ArcGisGraphicsRenderer, MapLayerFeatureAttribute, MapLayerFeatureInfo } from "@itwin/core-frontend";
2
+ import { FeatureGeometryRenderer, GraphicsGeometryRenderer, MapLayerFeatureAttribute, MapLayerFeatureInfo } from "@itwin/core-frontend";
3
3
  import { ImageMapLayerSettings } from "@itwin/core-common";
4
4
  import { ArcGisBaseFeatureReader } from "./ArcGisFeatureReader";
5
5
  import { ArcGisResponseData } from "./ArcGisFeatureResponse";
@@ -14,9 +14,9 @@ export declare class ArcGisPbfFeatureReader extends ArcGisBaseFeatureReader {
14
14
  static getArcGisFeatureGeometryType(geomType: esriPBuffer.FeatureCollectionPBuffer.GeometryType): ArcGisFeatureGeometryType;
15
15
  private getNumericValue;
16
16
  getFeatureAttribute(fieldInfo: PbfFieldInfo, attrValue: esriPBuffer.FeatureCollectionPBuffer.Value): MapLayerFeatureAttribute | undefined;
17
- readAndRender(response: ArcGisResponseData, renderer: ArcGisGeometryRenderer): Promise<void>;
17
+ readAndRender(response: ArcGisResponseData, renderer: FeatureGeometryRenderer): Promise<void>;
18
18
  private applySymbologyAttributes;
19
- readFeatureInfo(response: ArcGisResponseData, featureInfos: MapLayerFeatureInfo[], renderer?: ArcGisGraphicsRenderer): Promise<void>;
19
+ readFeatureInfo(response: ArcGisResponseData, featureInfos: MapLayerFeatureInfo[], renderer?: GraphicsGeometryRenderer): Promise<void>;
20
20
  }
21
21
  export {};
22
22
  //# sourceMappingURL=ArcGisPbfFeatureReader.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ArcGisPbfFeatureReader.d.ts","sourceRoot":"","sources":["../../../src/ArcGisFeature/ArcGisPbfFeatureReader.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAC/D,OAAO,EAAkC,sBAAsB,EAAE,sBAAsB,EAAmB,wBAAwB,EAAE,mBAAmB,EAAyB,MAAM,sBAAsB,CAAC;AAE7M,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAKjE,UAAU,YAAY;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,WAAW,CAAC,wBAAwB,CAAC,SAAS,CAAC;CACtD;AAED,gBAAgB;AAChB,qBAAa,sBAAuB,SAAQ,uBAAuB;gBAC9C,QAAQ,EAAE,qBAAqB,EAAE,aAAa,EAAE,GAAG;WAIxD,4BAA4B,CAAC,QAAQ,EAAE,WAAW,CAAC,wBAAwB,CAAC,YAAY,GAAG,yBAAyB;IAiBlI,OAAO,CAAC,eAAe;IAiChB,mBAAmB,CAAC,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,WAAW,CAAC,wBAAwB,CAAC,KAAK,GAAG,wBAAwB,GAAC,SAAS;IA2DjI,aAAa,CAAC,QAAQ,EAAE,kBAAkB,EAAE,QAAQ,EAAE,sBAAsB;IA0CzF,OAAO,CAAC,wBAAwB;IA0BnB,eAAe,CAAC,QAAQ,EAAE,kBAAkB,EAAE,YAAY,EAAE,mBAAmB,EAAE,EAAE,QAAQ,CAAC,EAAE,sBAAsB;CAkElI"}
1
+ {"version":3,"file":"ArcGisPbfFeatureReader.d.ts","sourceRoot":"","sources":["../../../src/ArcGisFeature/ArcGisPbfFeatureReader.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAC/D,OAAO,EAAmC,uBAAuB,EAAE,wBAAwB,EAAmB,wBAAwB,EAAE,mBAAmB,EAAyB,MAAM,sBAAsB,CAAC;AAEjN,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAKjE,UAAU,YAAY;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,WAAW,CAAC,wBAAwB,CAAC,SAAS,CAAC;CACtD;AAED,gBAAgB;AAChB,qBAAa,sBAAuB,SAAQ,uBAAuB;gBAC9C,QAAQ,EAAE,qBAAqB,EAAE,aAAa,EAAE,GAAG;WAIxD,4BAA4B,CAAC,QAAQ,EAAE,WAAW,CAAC,wBAAwB,CAAC,YAAY,GAAG,yBAAyB;IAiBlI,OAAO,CAAC,eAAe;IAiChB,mBAAmB,CAAC,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,WAAW,CAAC,wBAAwB,CAAC,KAAK,GAAG,wBAAwB,GAAC,SAAS;IA2DjI,aAAa,CAAC,QAAQ,EAAE,kBAAkB,EAAE,QAAQ,EAAE,uBAAuB;IAyC1F,OAAO,CAAC,wBAAwB;IA0BnB,eAAe,CAAC,QAAQ,EAAE,kBAAkB,EAAE,YAAY,EAAE,mBAAmB,EAAE,EAAE,QAAQ,CAAC,EAAE,wBAAwB;CAkEpI"}
@@ -136,7 +136,6 @@ export class ArcGisPbfFeatureReader extends ArcGisBaseFeatureReader {
136
136
  const collection = response.data;
137
137
  if (!collection.has_queryResult || !collection.queryResult.has_featureResult || collection?.queryResult?.featureResult?.features === undefined)
138
138
  return;
139
- const attrSymbology = renderer.attributeSymbology;
140
139
  // Fields metadata is stored outside feature results, create dedicated array first
141
140
  const fields = [];
142
141
  for (const field of collection.queryResult.featureResult.fields)
@@ -147,9 +146,9 @@ export class ArcGisPbfFeatureReader extends ArcGisBaseFeatureReader {
147
146
  for (const feature of collection.queryResult.featureResult.features) {
148
147
  // Render geometries
149
148
  if (renderer && feature?.has_geometry) {
150
- if (attrSymbology) {
149
+ if (renderer.hasSymbologyRenderer() && renderer.symbolRenderer.isAttributeDriven()) {
151
150
  // Read attributes if needed (attribute driven symbology)
152
- this.applySymbologyAttributes(attrSymbology, feature, fields);
151
+ this.applySymbologyAttributes(renderer.symbolRenderer, feature, fields);
153
152
  }
154
153
  if (geomType === esriGeometryType.esriGeometryTypePoint || geomType === esriGeometryType.esriGeometryTypeMultipoint) {
155
154
  await renderer.renderPoint(feature.geometry.lengths, feature.geometry.coords, stride, relativeCoords);
@@ -1 +1 @@
1
- {"version":3,"file":"ArcGisPbfFeatureReader.js","sourceRoot":"","sources":["../../../src/ArcGisFeature/ArcGisPbfFeatureReader.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAE/D,OAAO,EAAkB,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/F,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAEhE,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAG7C,MAAM,gBAAgB,GAAG,WAAW,CAAC,wBAAwB,CAAC,YAAY,CAAC;AAC3E,MAAM,cAAc,GAAG,gCAAgC,CAAC;AAOxD,gBAAgB;AAChB,MAAM,OAAO,sBAAuB,SAAQ,uBAAuB;IACjE,YAAmB,QAA+B,EAAE,aAAkB;QACpE,KAAK,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;IACjC,CAAC;IAEM,MAAM,CAAC,4BAA4B,CAAC,QAA2D;QACpG,QAAQ,QAAQ,EAAE;YAChB,KAAK,WAAW,CAAC,wBAAwB,CAAC,YAAY,CAAC,0BAA0B;gBAC/E,OAAO,wBAAwB,CAAC;YAClC,KAAK,WAAW,CAAC,wBAAwB,CAAC,YAAY,CAAC,0BAA0B;gBAC/E,OAAO,wBAAwB,CAAC;YAClC,KAAK,WAAW,CAAC,wBAAwB,CAAC,YAAY,CAAC,qBAAqB;gBAC1E,OAAO,mBAAmB,CAAC;YAC7B,KAAK,WAAW,CAAC,wBAAwB,CAAC,YAAY,CAAC,uBAAuB;gBAC5E,OAAO,qBAAqB,CAAC;YAC/B,KAAK,WAAW,CAAC,wBAAwB,CAAC,YAAY,CAAC,wBAAwB;gBAC7E,OAAO,sBAAsB,CAAC;YAChC;gBACE,OAAO,kBAAkB,CAAC;SAC7B;IACH,CAAC;IAEO,eAAe,CAAC,SAAqD;QAC3E,MAAM,aAAa,GAAmB,EAAE,WAAW,EAAE,mBAAmB,CAAC,SAAS,EAAE,CAAC;QACrF,IAAI,QAAQ,GAAG,iBAAiB,CAAC,MAAM,CAAC;QACxC,IAAI,SAAS,CAAC,gBAAgB,EAAE;YAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;YACjE,aAAa,CAAC,KAAK,GAAG,KAAK,CAAC;YAC5B,QAAQ,GAAG,iBAAiB,CAAC,MAAM,CAAC;SACrC;aAAM,IAAI,SAAS,CAAC,eAAe,EAAE;YACpC,MAAM,KAAK,GAAG,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;YAChE,aAAa,CAAC,KAAK,GAAG,KAAK,CAAC;YAC5B,QAAQ,GAAG,iBAAiB,CAAC,KAAK,CAAC;SACpC;aAAM,IAAI,SAAS,CAAC,eAAe,EAAE;YACpC,aAAa,CAAC,KAAK,GAAG,SAAS,CAAC,WAAW,CAAC;YAC5C,QAAQ,GAAG,iBAAiB,CAAC,OAAO,CAAC;SACtC;aAAM,IAAI,SAAS,CAAC,gBAAgB,EAAE;YACrC,aAAa,CAAC,KAAK,GAAG,SAAS,CAAC,YAAY,CAAC;YAC7C,QAAQ,GAAG,iBAAiB,CAAC,OAAO,CAAC;SACtC;aAAM,IAAI,SAAS,CAAC,cAAc,EAAE;YACnC,aAAa,CAAC,KAAK,GAAG,SAAS,CAAC,UAAU,CAAC;YAC3C,QAAQ,GAAG,iBAAiB,CAAC,OAAO,CAAC;SACtC;aAAM,IAAI,SAAS,CAAC,gBAAgB,EAAE;YACrC,aAAa,CAAC,KAAK,GAAG,SAAS,CAAC,YAAY,CAAC;YAC7C,QAAQ,GAAG,iBAAiB,CAAC,OAAO,CAAC;SACtC;aAAM,IAAI,SAAS,CAAC,cAAc,EAAE;YACnC,aAAa,CAAC,KAAK,GAAG,SAAS,CAAC,UAAU,CAAC;YAC3C,QAAQ,GAAG,iBAAiB,CAAC,OAAO,CAAC;SACtC;aAAM;YACL,aAAa,CAAC,KAAK,GAAG,SAAS,CAAC;SACjC;QAED,OAAO,EAAE,aAAa,EAAG,QAAQ,EAAE,CAAC;IACtC,CAAC;IAEM,mBAAmB,CAAC,SAAuB,EAAE,SAAqD;QACvG,IAAI,aAAa,GAAmB,EAAE,WAAW,EAAE,mBAAmB,CAAC,SAAS,EAAE,CAAC;QAEnF,IAAI,QAAQ,GAAG,iBAAiB,CAAC,MAAM,CAAC;QACxC,IAAI,SAAS,CAAC,IAAI,KAAK,WAAW,CAAC,wBAAwB,CAAC,SAAS,CAAC,mBAAmB;eACpF,SAAS,CAAC,IAAI,KAAK,WAAW,CAAC,wBAAwB,CAAC,SAAS,CAAC,oBAAoB;eACtF,SAAS,CAAC,IAAI,KAAK,WAAW,CAAC,wBAAwB,CAAC,SAAS,CAAC,yBAAyB;eAC3F,SAAS,CAAC,IAAI,KAAK,WAAW,CAAC,wBAAwB,CAAC,SAAS,CAAC,gBAAgB;eAClF,SAAS,CAAC,IAAI,KAAK,WAAW,CAAC,wBAAwB,CAAC,SAAS,CAAC,mBAAmB;eACrF,SAAS,CAAC,IAAI,KAAK,WAAW,CAAC,wBAAwB,CAAC,SAAS,CAAC,iBAAiB,EACtF;YACA,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;YAC9C,IAAI,KAAK,CAAC,aAAa,KAAK,SAAS,EAAE;gBACrC,MAAM,CAAC,QAAQ,CAAC,cAAc,EAAE,0CAA0C,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC5F,OAAO,SAAS,CAAC;aAClB;YAED,IAAI,SAAS,CAAC,IAAI,KAAK,WAAW,CAAC,wBAAwB,CAAC,SAAS,CAAC,iBAAiB,EAAE;gBACvF,MAAM,IAAI,GAAI,KAAK,CAAC,aAAa,CAAC,KAA2B,CAAC;gBAC9D,aAAa,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;gBACrC,QAAQ,GAAG,iBAAiB,CAAC,QAAQ,CAAC;aACvC;iBAAM;gBACL,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;gBAC1B,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC;aACrC;SACF;aAAM,IAAI,SAAS,CAAC,IAAI,KAAK,WAAW,CAAC,wBAAwB,CAAC,SAAS,CAAC,mBAAmB,EAAE;YAChG,IAAI,SAAS,CAAC,gBAAgB,EAAE;gBAC9B,aAAa,CAAC,KAAK,GAAG,SAAS,CAAC,YAAY,CAAC;gBAC7C,QAAQ,GAAG,iBAAiB,CAAC,MAAM,CAAC;aACrC;SACF;aAAM,IAAI,SAAS,CAAC,IAAI,KAAK,WAAW,CAAC,wBAAwB,CAAC,SAAS,CAAC,qBAAqB,EAAE;YAClG,IAAI,SAAS,CAAC,gBAAgB,EAAE;gBAC9B,aAAa,CAAC,KAAK,GAAG,SAAS,CAAC,YAAY,CAAC;gBAC7C,QAAQ,GAAG,iBAAiB,CAAC,MAAM,CAAC;aACrC;iBAAM;gBACL,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;gBAC9C,IAAI,KAAK,CAAC,aAAa,KAAK,SAAS,EAAE;oBACrC,MAAM,CAAC,QAAQ,CAAC,cAAc,EAAE,2CAA2C,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;oBAC7F,OAAO,SAAS,CAAC;iBAClB;aACF;SACF;aAAM,IAAI,SAAS,CAAC,gBAAgB,EAAE;YACrC,8GAA8G;YAC9G,QAAQ,GAAG,iBAAiB,CAAC,MAAM,CAAC;YACpC,aAAa,CAAC,KAAK,GAAG,SAAS,CAAC,YAAY,CAAC;SAC9C;aAAM,IAAI,SAAS,CAAC,UAAU,KAAK,MAAM,EAAE;YAC1C,uDAAuD;YACvD,QAAQ,GAAG,iBAAiB,CAAC,MAAM,CAAC;YACpC,aAAa,CAAC,KAAK,GAAG,SAAS,CAAC;SACjC;aAAM;YACL,MAAM,CAAC,QAAQ,CAAC,cAAc,EAAE,kCAAkC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;YACpF,OAAO,SAAS,CAAC;SAClB;QAED,aAAa,CAAC,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC;QAEjF,OAAO,EAAC,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,YAAY,EAAE,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC;IAC7G,CAAC;IAEM,KAAK,CAAC,aAAa,CAAC,QAA4B,EAAE,QAAgC;QACvF,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,YAAY,WAAW,CAAC,wBAAwB,CAAC,EAAE;YACpE,MAAM,GAAG,GAAG,gCAAgC,CAAC;YAC7C,MAAM,CAAC,QAAQ,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;YACrC,OAAO;SACR;QAED,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC;QACjC,IAAI,CAAC,UAAU,CAAC,eAAe,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,iBAAiB,IAAI,UAAU,EAAE,WAAW,EAAE,aAAa,EAAE,QAAQ,KAAK,SAAS;YAC5I,OAAO;QAET,MAAM,aAAa,GAAG,QAAQ,CAAC,kBAAkB,CAAC;QAElD,kFAAkF;QAClF,MAAM,MAAM,GAAmB,EAAE,CAAC;QAClC,KAAK,MAAM,KAAK,IAAI,UAAU,CAAC,WAAW,CAAC,aAAa,CAAC,MAAM;YAC7D,MAAM,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAC,KAAK,CAAC,SAAS,EAAC,CAAC,CAAC;QAExD,MAAM,QAAQ,GAAG,UAAU,CAAC,WAAW,CAAC,aAAa,CAAC,YAAY,CAAC;QACnE,MAAM,MAAM,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC,aAAa,CAAC,IAAI,IAAI,UAAU,CAAC,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAChH,MAAM,cAAc,GAAG,QAAQ,CAAC,SAAS,KAAK,SAAS,CAAC;QACxD,KAAK,MAAM,OAAO,IAAI,UAAU,CAAC,WAAW,CAAC,aAAa,CAAC,QAAQ,EAAE;YAEnE,oBAAoB;YACpB,IAAI,QAAQ,IAAI,OAAO,EAAE,YAAY,EAAE;gBAErC,IAAI,aAAa,EAAE;oBACjB,yDAAyD;oBACzD,IAAI,CAAC,wBAAwB,CAAC,aAAa,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;iBAC/D;gBAED,IAAI,QAAQ,KAAK,gBAAgB,CAAC,qBAAqB,IAAI,QAAQ,KAAK,gBAAgB,CAAC,0BAA0B,EAAE;oBACnH,MAAM,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC;iBACvG;qBAAM,IAAI,QAAQ,KAAK,gBAAgB,CAAC,wBAAwB,IAAI,QAAQ,KAAK,gBAAgB,CAAC,uBAAuB,EAAE;oBAC1H,MAAM,IAAI,GAAG,CAAC,QAAQ,KAAK,gBAAgB,CAAC,uBAAuB,CAAC,CAAC;oBACrE,MAAM,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC;iBAC5G;aACF;SAEF;IACH,CAAC;IAEO,wBAAwB,CAAC,aAA6C,EAAE,OAAqD,EAAE,MAAsB;QAC3J,IAAI,aAAa,EAAE;YACjB,MAAM,YAAY,GAAG,aAAa,CAAC,cAAc,CAAC;YAClD,IAAI,YAAY,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,UAAU,EAAE;gBACjE,IAAI,QAAQ,GAAG,CAAC,CAAC;gBACjB,MAAM,WAAW,GAAyB,EAAE,CAAC;gBAC7C,KAAK,MAAM,SAAS,IAAI,OAAO,CAAC,UAAU,EAAE;oBAC1C,IAAI,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE;wBAC5B,MAAM,CAAC,QAAQ,CAAC,cAAc,EAAE,6DAA6D,CAAC,CAAC;wBAC/F,MAAM;qBACP;oBACD,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;oBACrC,IAAI,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;wBACzC,MAAM,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;wBAC5D,IAAI,IAAI,EAAE;4BACR,MAAM,cAAc,GAAG,IAAI,CAAC,KAAuB,CAAC;4BACpD,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC;yBACpD;qBACF;iBAEF;gBACD,aAAa,CAAC,0BAA0B,CAAC,WAAW,CAAC,CAAC;aACvD;SACF;IACH,CAAC;IAEM,KAAK,CAAC,eAAe,CAAC,QAA4B,EAAE,YAAmC,EAAE,QAAiC;QAC/H,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,YAAY,WAAW,CAAC,wBAAwB,CAAC,EAAE;YAEpE,MAAM,CAAC,QAAQ,CAAC,cAAc,EAAE,gCAAgC,CAAC,CAAC;SACnE;QAED,MAAM,UAAU,GAAG,QAAQ,CAAC,IAA4C,CAAC;QACzE,IAAI,CAAC,UAAU,CAAC,eAAe,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,iBAAiB,IAAI,UAAU,EAAE,WAAW,EAAE,aAAa,EAAE,QAAQ,KAAK,SAAS;YAC5I,OAAO;QAET,MAAM,SAAS,GAAwB,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC;QAE7F,kFAAkF;QAClF,MAAM,MAAM,GAAmB,EAAE,CAAC;QAClC,KAAK,MAAM,KAAK,IAAI,UAAU,CAAC,WAAW,CAAC,aAAa,CAAC,MAAM;YAC7D,MAAM,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAC,KAAK,CAAC,SAAS,EAAC,CAAC,CAAC;QAExD,MAAM,QAAQ,GAAG,UAAU,CAAC,WAAW,CAAC,aAAa,CAAC,YAAY,CAAC;QACnE,MAAM,MAAM,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC,aAAa,CAAC,IAAI,IAAI,UAAU,CAAC,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAEhH,MAAM,YAAY,GAA2B;YAC3C,YAAY,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI;YACtC,gBAAgB,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI;YAC1C,QAAQ,EAAE,EAAE;SACb,CAAC;QAEF,sBAAsB;QACtB,KAAK,MAAM,eAAe,IAAI,UAAU,CAAC,WAAW,CAAC,aAAa,CAAC,QAAQ,EAAE;YAC3E,MAAM,OAAO,GAAoB,EAAE,UAAU,EAAE,EAAE,EAAC,CAAC;YAEnD,IAAI,QAAQ,IAAI,eAAe,EAAE,YAAY,EAAE;gBAC7C,IAAI,QAAQ,KAAK,gBAAgB,CAAC,qBAAqB,IAAI,QAAQ,KAAK,gBAAgB,CAAC,0BAA0B,EAAE;oBACnH,MAAM,QAAQ,CAAC,WAAW,CAAC,eAAe,CAAC,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;iBAC7G;qBAAM,IAAI,QAAQ,KAAK,gBAAgB,CAAC,wBAAwB,IAAI,QAAQ,KAAK,gBAAgB,CAAC,uBAAuB,EAAE;oBAC1H,MAAM,IAAI,GAAG,CAAC,QAAQ,KAAK,gBAAgB,CAAC,uBAAuB,CAAC,CAAC;oBACrE,MAAM,QAAQ,CAAC,UAAU,CAAC,eAAe,CAAC,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;iBAClH;gBACD,MAAM,QAAQ,GAAG,QAAQ,CAAC,YAAY,EAAE,CAAC;gBACzC,OAAO,CAAC,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;oBAC5C,OAAO,EAAC,OAAO,EAAC,CAAC;gBACnB,CAAC,CAAC,CAAC;aACJ;YAED,IAAI,QAAQ,GAAG,CAAC,CAAC;YACjB,KAAK,MAAM,SAAS,IAAI,eAAe,CAAC,UAAU,EAAE;gBAClD,IAAI,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE;oBAC5B,MAAM,CAAC,QAAQ,CAAC,cAAc,EAAE,6DAA6D,CAAC,CAAC;oBAC/F,MAAM;iBACP;gBACD,uCAAuC;gBACvC,MAAM,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC,CAAC;gBACnE,IAAI,IAAI,EAAE;oBACR,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;iBAChC;gBAED,QAAQ,EAAE,CAAC;aACZ;YACD,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SACrC;QAED,IAAI,SAAS,CAAC,aAAa,KAAK,SAAS,EAAE;YACzC,SAAS,CAAC,aAAa,GAAG,EAAE,CAAC;SAC9B;QACD,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC3C,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC/B,CAAC;CACF","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\nimport { esriPBuffer } from \"../ArcGisFeature/esriPBuffer.gen\";\nimport { ArcGisAttributeDrivenSymbology, ArcGisGeometryRenderer, ArcGisGraphicsRenderer, MapLayerFeature, MapLayerFeatureAttribute, MapLayerFeatureInfo, MapSubLayerFeatureInfo} from \"@itwin/core-frontend\";\nimport { PrimitiveValue, PropertyValueFormat, StandardTypeNames } from \"@itwin/appui-abstract\";\nimport { ImageMapLayerSettings } from \"@itwin/core-common\";\nimport { ArcGisBaseFeatureReader } from \"./ArcGisFeatureReader\";\nimport { ArcGisResponseData } from \"./ArcGisFeatureResponse\";\nimport { Logger } from \"@itwin/core-bentley\";\nimport { ArcGisFeatureGeometryType } from \"./ArcGisFeatureQuery\";\n\nconst esriGeometryType = esriPBuffer.FeatureCollectionPBuffer.GeometryType;\nconst loggerCategory = \"MapLayersFormats.ArcGISFeature\";\n\ninterface PbfFieldInfo {\n name: string;\n type: esriPBuffer.FeatureCollectionPBuffer.FieldType;\n}\n\n/** @internal */\nexport class ArcGisPbfFeatureReader extends ArcGisBaseFeatureReader {\n public constructor(settings: ImageMapLayerSettings, layerMetadata: any) {\n super(settings, layerMetadata);\n }\n\n public static getArcGisFeatureGeometryType(geomType: esriPBuffer.FeatureCollectionPBuffer.GeometryType): ArcGisFeatureGeometryType {\n switch (geomType) {\n case esriPBuffer.FeatureCollectionPBuffer.GeometryType.esriGeometryTypeMultipatch:\n return \"esriGeometryMultiPatch\";\n case esriPBuffer.FeatureCollectionPBuffer.GeometryType.esriGeometryTypeMultipoint:\n return \"esriGeometryMultipoint\";\n case esriPBuffer.FeatureCollectionPBuffer.GeometryType.esriGeometryTypePoint:\n return \"esriGeometryPoint\";\n case esriPBuffer.FeatureCollectionPBuffer.GeometryType.esriGeometryTypePolygon:\n return \"esriGeometryPolygon\";\n case esriPBuffer.FeatureCollectionPBuffer.GeometryType.esriGeometryTypePolyline:\n return \"esriGeometryPolyline\";\n default:\n return \"esriGeometryNull\";\n }\n }\n\n private getNumericValue(attrValue: esriPBuffer.FeatureCollectionPBuffer.Value) {\n const propertyValue: PrimitiveValue = { valueFormat: PropertyValueFormat.Primitive };\n let typename = StandardTypeNames.Number;\n if (attrValue.has_double_value) {\n const value = this.toFixedWithoutPadding(attrValue.double_value);\n propertyValue.value = value;\n typename = StandardTypeNames.Double;\n } else if (attrValue.has_float_value) {\n const value = this.toFixedWithoutPadding(attrValue.float_value);\n propertyValue.value = value;\n typename = StandardTypeNames.Float;\n } else if (attrValue.has_int64_value) {\n propertyValue.value = attrValue.int64_value;\n typename = StandardTypeNames.Integer;\n } else if (attrValue.has_sint64_value) {\n propertyValue.value = attrValue.sint64_value;\n typename = StandardTypeNames.Integer;\n } else if (attrValue.has_sint_value) {\n propertyValue.value = attrValue.sint_value;\n typename = StandardTypeNames.Integer;\n } else if (attrValue.has_uint64_value) {\n propertyValue.value = attrValue.uint64_value;\n typename = StandardTypeNames.Integer;\n } else if (attrValue.has_uint_value) {\n propertyValue.value = attrValue.uint_value;\n typename = StandardTypeNames.Integer;\n } else {\n propertyValue.value = undefined;\n }\n\n return { propertyValue, typename };\n }\n\n public getFeatureAttribute(fieldInfo: PbfFieldInfo, attrValue: esriPBuffer.FeatureCollectionPBuffer.Value): MapLayerFeatureAttribute|undefined {\n let propertyValue: PrimitiveValue = { valueFormat: PropertyValueFormat.Primitive };\n\n let typename = StandardTypeNames.String;\n if (fieldInfo.type === esriPBuffer.FeatureCollectionPBuffer.FieldType.esriFieldTypeDouble\n || fieldInfo.type === esriPBuffer.FeatureCollectionPBuffer.FieldType.esriFieldTypeInteger\n || fieldInfo.type === esriPBuffer.FeatureCollectionPBuffer.FieldType.esriFieldTypeSmallInteger\n || fieldInfo.type === esriPBuffer.FeatureCollectionPBuffer.FieldType.esriFieldTypeOID\n || fieldInfo.type === esriPBuffer.FeatureCollectionPBuffer.FieldType.esriFieldTypeSingle\n || fieldInfo.type === esriPBuffer.FeatureCollectionPBuffer.FieldType.esriFieldTypeDate\n ) {\n const value = this.getNumericValue(attrValue);\n if (value.propertyValue === undefined) {\n Logger.logError(loggerCategory, `Could not read numeric value for field ${fieldInfo.name}`);\n return undefined;\n }\n\n if (fieldInfo.type === esriPBuffer.FeatureCollectionPBuffer.FieldType.esriFieldTypeDate) {\n const test = (value.propertyValue.value as unknown) as number;\n propertyValue.value = new Date(test);\n typename = StandardTypeNames.DateTime;\n } else {\n typename = value.typename;\n propertyValue = value.propertyValue;\n }\n } else if (fieldInfo.type === esriPBuffer.FeatureCollectionPBuffer.FieldType.esriFieldTypeString) {\n if (attrValue.has_string_value) {\n propertyValue.value = attrValue.string_value;\n typename = StandardTypeNames.String;\n }\n } else if (fieldInfo.type === esriPBuffer.FeatureCollectionPBuffer.FieldType.esriFieldTypeGlobalID) {\n if (attrValue.has_string_value) {\n propertyValue.value = attrValue.string_value;\n typename = StandardTypeNames.String;\n } else {\n const value = this.getNumericValue(attrValue);\n if (value.propertyValue === undefined) {\n Logger.logError(loggerCategory, `Could not read GlobalId value for field ${fieldInfo.name}`);\n return undefined;\n }\n }\n } else if (attrValue.has_string_value) {\n // If we reach this case that probably mean we don't support the field type, simply try to output string value\n typename = StandardTypeNames.String;\n propertyValue.value = attrValue.string_value;\n } else if (attrValue.value_type === \"none\") {\n // Sometimes fields are just empty, use an empty string\n typename = StandardTypeNames.String;\n propertyValue.value = undefined;\n } else {\n Logger.logError(loggerCategory, `Could not read value for field ${fieldInfo.name}`);\n return undefined;\n }\n\n propertyValue.displayValue = this.getDisplayValue(typename, propertyValue.value);\n\n return {value: propertyValue, property: { name: fieldInfo.name, displayLabel: fieldInfo.name, typename } };\n }\n\n public async readAndRender(response: ArcGisResponseData, renderer: ArcGisGeometryRenderer) {\n if (!(response.data instanceof esriPBuffer.FeatureCollectionPBuffer)) {\n const msg = \"Response was not in PBF format\";\n Logger.logError(loggerCategory, msg);\n return;\n }\n\n const collection = response.data;\n if (!collection.has_queryResult || !collection.queryResult.has_featureResult || collection?.queryResult?.featureResult?.features === undefined)\n return;\n\n const attrSymbology = renderer.attributeSymbology;\n\n // Fields metadata is stored outside feature results, create dedicated array first\n const fields: PbfFieldInfo[] = [];\n for (const field of collection.queryResult.featureResult.fields)\n fields.push({name: field.name, type:field.fieldType});\n\n const geomType = collection.queryResult.featureResult.geometryType;\n const stride = (collection.queryResult.featureResult.hasM || collection.queryResult.featureResult.hasZ) ? 3 : 2;\n const relativeCoords = renderer.transform === undefined;\n for (const feature of collection.queryResult.featureResult.features) {\n\n // Render geometries\n if (renderer && feature?.has_geometry) {\n\n if (attrSymbology) {\n // Read attributes if needed (attribute driven symbology)\n this.applySymbologyAttributes(attrSymbology, feature, fields);\n }\n\n if (geomType === esriGeometryType.esriGeometryTypePoint || geomType === esriGeometryType.esriGeometryTypeMultipoint) {\n await renderer.renderPoint(feature.geometry.lengths, feature.geometry.coords, stride, relativeCoords);\n } else if (geomType === esriGeometryType.esriGeometryTypePolyline || geomType === esriGeometryType.esriGeometryTypePolygon) {\n const fill = (geomType === esriGeometryType.esriGeometryTypePolygon);\n await renderer.renderPath(feature.geometry.lengths, feature.geometry.coords, fill, stride, relativeCoords);\n }\n }\n\n }\n }\n\n private applySymbologyAttributes(attrSymbology: ArcGisAttributeDrivenSymbology, feature: esriPBuffer.FeatureCollectionPBuffer.Feature, fields: PbfFieldInfo[]) {\n if (attrSymbology) {\n const symbolFields = attrSymbology.rendererFields;\n if (symbolFields && symbolFields.length > 0 && feature.attributes) {\n let fieldIdx = 0;\n const featureAttr: {[key: string]: any} = {};\n for (const attrValue of feature.attributes) {\n if (fieldIdx > fields.length) {\n Logger.logError(loggerCategory, \"Error while read feature info data: fields metadata missing\");\n break;\n }\n const fieldInfo = fields[fieldIdx++];\n if (symbolFields.includes(fieldInfo.name)) {\n const attr = this.getFeatureAttribute(fieldInfo, attrValue);\n if (attr) {\n const primitiveValue = attr.value as PrimitiveValue;\n featureAttr[fieldInfo.name] = primitiveValue.value;\n }\n }\n\n }\n attrSymbology.setActiveFeatureAttributes(featureAttr);\n }\n }\n }\n\n public async readFeatureInfo(response: ArcGisResponseData, featureInfos: MapLayerFeatureInfo[], renderer?: ArcGisGraphicsRenderer) {\n if (!(response.data instanceof esriPBuffer.FeatureCollectionPBuffer)) {\n\n Logger.logError(loggerCategory, \"Response was not in PBF format\");\n }\n\n const collection = response.data as esriPBuffer.FeatureCollectionPBuffer;\n if (!collection.has_queryResult || !collection.queryResult.has_featureResult || collection?.queryResult?.featureResult?.features === undefined)\n return;\n\n const layerInfo: MapLayerFeatureInfo = { layerName: this._settings.name, subLayerInfos: [] };\n\n // Fields metadata is stored outside feature results, create dedicated array first\n const fields: PbfFieldInfo[] = [];\n for (const field of collection.queryResult.featureResult.fields)\n fields.push({name: field.name, type:field.fieldType});\n\n const geomType = collection.queryResult.featureResult.geometryType;\n const stride = (collection.queryResult.featureResult.hasM || collection.queryResult.featureResult.hasZ) ? 3 : 2;\n\n const subLayerInfo: MapSubLayerFeatureInfo = {\n subLayerName: this._layerMetadata.name,\n displayFieldName: this._layerMetadata.name,\n features: [],\n };\n\n // Read feature values\n for (const featureResponse of collection.queryResult.featureResult.features) {\n const feature: MapLayerFeature = { attributes: []};\n\n if (renderer && featureResponse?.has_geometry) {\n if (geomType === esriGeometryType.esriGeometryTypePoint || geomType === esriGeometryType.esriGeometryTypeMultipoint) {\n await renderer.renderPoint(featureResponse.geometry.lengths, featureResponse.geometry.coords, stride, true);\n } else if (geomType === esriGeometryType.esriGeometryTypePolyline || geomType === esriGeometryType.esriGeometryTypePolygon) {\n const fill = (geomType === esriGeometryType.esriGeometryTypePolygon);\n await renderer.renderPath(featureResponse.geometry.lengths, featureResponse.geometry.coords, fill, stride, true);\n }\n const graphics = renderer.moveGraphics();\n feature.geometries = graphics.map((graphic) => {\n return {graphic};\n });\n }\n\n let fieldIdx = 0;\n for (const attrValue of featureResponse.attributes) {\n if (fieldIdx > fields.length) {\n Logger.logError(loggerCategory, \"Error while read feature info data: fields metadata missing\");\n break;\n }\n // Convert everything to string for now\n const attr = this.getFeatureAttribute(fields[fieldIdx], attrValue);\n if (attr) {\n feature.attributes?.push(attr);\n }\n\n fieldIdx++;\n }\n subLayerInfo.features.push(feature);\n }\n\n if (layerInfo.subLayerInfos === undefined) {\n layerInfo.subLayerInfos = [];\n }\n layerInfo.subLayerInfos.push(subLayerInfo);\n featureInfos.push(layerInfo);\n }\n}\n"]}
1
+ {"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,14 +1,29 @@
1
1
  import { EsriClassBreaksRenderer, EsriRenderer, EsriSMS, EsriSymbol, EsriUniqueValueRenderer } from "./EsriSymbology";
2
- import { ArcGisAttributeDrivenSymbology } from "@itwin/core-frontend";
2
+ import { FeatureAttributeDrivenSymbology, FeatureSymbologyRenderer } from "@itwin/core-frontend";
3
+ import { FeatureDefaultSymbology } from "../Feature/FeatureSymbology";
4
+ import { ArcGisFeatureGeometryType } from "./ArcGisFeatureQuery";
3
5
  /** @internal */
4
6
  export type ArcGisSymbologyRendererType = "simple" | "attributeDriven";
7
+ /** Feature Symbology renderer applicable to an HTML 2D Canvas
8
+ * @internal
9
+ */
10
+ export interface FeatureSymbologyCanvasRenderer extends FeatureSymbologyRenderer {
11
+ applyFillStyle(context: CanvasRenderingContext2D): void;
12
+ applyStrokeStyle(context: CanvasRenderingContext2D): void;
13
+ drawPoint(context: CanvasRenderingContext2D, ptX: number, ptY: number): void;
14
+ }
5
15
  /** @internal */
6
- export declare abstract class ArcGisSymbologyRenderer {
7
- abstract isAttributeDriven(): this is ArcGisAttributeDrivenSymbology;
16
+ export declare abstract class ArcGisSymbologyCanvasRenderer implements FeatureSymbologyCanvasRenderer {
17
+ abstract readonly renderer?: EsriRenderer;
18
+ abstract get symbol(): EsriSymbol;
19
+ abstract set symbol(symbol: EsriSymbol | undefined);
20
+ abstract get defaultSymbol(): EsriSymbol;
21
+ activeGeometryType: string;
22
+ abstract isAttributeDriven(): this is FeatureAttributeDrivenSymbology;
8
23
  abstract applyFillStyle(context: CanvasRenderingContext2D): void;
9
24
  abstract applyStrokeStyle(context: CanvasRenderingContext2D): void;
10
25
  abstract drawPoint(context: CanvasRenderingContext2D, ptX: number, ptY: number): void;
11
- static create(renderer: EsriRenderer | undefined, defaultSymbol: EsriSymbol): ArcGisSimpleSymbologyRenderer;
26
+ static create(renderer: EsriRenderer | undefined, defaultSymbol: FeatureDefaultSymbology, geometryType?: ArcGisFeatureGeometryType): ArcGisSymbologyCanvasRenderer;
12
27
  }
13
28
  /** @internal */
14
29
  export declare class ArcGisDashLineStyle {
@@ -37,15 +52,16 @@ export declare class ArcGisDashLineStyle {
37
52
  };
38
53
  }
39
54
  /** @internal */
40
- export declare class ArcGisSimpleSymbologyRenderer extends ArcGisSymbologyRenderer {
41
- isAttributeDriven(): this is ArcGisAttributeDrivenSymbology;
55
+ export declare class ArcGisSimpleSymbologyRenderer extends ArcGisSymbologyCanvasRenderer {
56
+ protected _symbol: EsriSymbol | undefined;
57
+ protected _defaultSymbol: FeatureDefaultSymbology;
58
+ isAttributeDriven(): this is FeatureAttributeDrivenSymbology;
42
59
  lineWidthScaleFactor: number;
43
60
  get symbol(): EsriSymbol;
61
+ set symbol(symbol: EsriSymbol | undefined);
44
62
  get defaultSymbol(): EsriSymbol;
45
- protected _symbol: EsriSymbol;
46
- protected _defaultSymbol: EsriSymbol;
47
63
  readonly renderer?: EsriRenderer;
48
- constructor(renderer: EsriRenderer | undefined, defaultSymbol: EsriSymbol);
64
+ constructor(renderer: EsriRenderer | undefined, defaultSymbol: FeatureDefaultSymbology, geometryType?: ArcGisFeatureGeometryType);
49
65
  applyFillStyle(context: CanvasRenderingContext2D): void;
50
66
  private getFillColor;
51
67
  private applyLineDash;
@@ -61,27 +77,31 @@ export declare class ArcGisSimpleSymbologyRenderer extends ArcGisSymbologyRender
61
77
  drawPoint(context: CanvasRenderingContext2D, ptX: number, ptY: number): void;
62
78
  }
63
79
  /** @internal */
64
- export declare class ArcGisUniqueValueSymbologyRenderer extends ArcGisSimpleSymbologyRenderer implements ArcGisAttributeDrivenSymbology {
65
- isAttributeDriven(): this is ArcGisAttributeDrivenSymbology;
80
+ export declare class ArcGisUniqueValueSymbologyRenderer extends ArcGisSimpleSymbologyRenderer implements FeatureAttributeDrivenSymbology {
81
+ isAttributeDriven(): this is FeatureAttributeDrivenSymbology;
66
82
  protected _activeFeatureAttributes: {
67
83
  [key: string]: any;
68
84
  } | undefined;
69
85
  protected uvRenderer: EsriUniqueValueRenderer;
86
+ private _defaultRenderSymbol;
87
+ get defaultSymbol(): EsriSymbol;
70
88
  get rendererFields(): string[] | undefined;
71
- constructor(renderer: EsriUniqueValueRenderer, defaultSymbol: EsriSymbol);
89
+ constructor(renderer: EsriUniqueValueRenderer, defaultSymbol: FeatureDefaultSymbology, geometryType?: ArcGisFeatureGeometryType);
72
90
  setActiveFeatureAttributes(attributes: {
73
91
  [key: string]: any;
74
92
  }): void;
75
93
  }
76
94
  /** @internal */
77
- export declare class ArcGisClassBreaksSymbologyRenderer extends ArcGisSimpleSymbologyRenderer implements ArcGisAttributeDrivenSymbology {
78
- isAttributeDriven(): this is ArcGisAttributeDrivenSymbology;
95
+ export declare class ArcGisClassBreaksSymbologyRenderer extends ArcGisSimpleSymbologyRenderer implements FeatureAttributeDrivenSymbology {
96
+ isAttributeDriven(): this is FeatureAttributeDrivenSymbology;
79
97
  protected _activeFeatureAttributes: {
80
98
  [key: string]: any;
81
99
  } | undefined;
82
100
  protected cbRenderer: EsriClassBreaksRenderer;
101
+ private _defaultRenderSymbol;
102
+ get defaultSymbol(): EsriSymbol;
83
103
  get rendererFields(): string[] | undefined;
84
- constructor(renderer: EsriClassBreaksRenderer, defaultSymbol: EsriSymbol);
104
+ constructor(renderer: EsriClassBreaksRenderer, defaultSymbol: FeatureDefaultSymbology, geometryType?: ArcGisFeatureGeometryType);
85
105
  setActiveFeatureAttributes(attributes: {
86
106
  [key: string]: any;
87
107
  }): void;
@@ -1 +1 @@
1
- {"version":3,"file":"ArcGisSymbologyRenderer.d.ts","sourceRoot":"","sources":["../../../src/ArcGisFeature/ArcGisSymbologyRenderer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ArcGisSymbologyRenderer.d.ts","sourceRoot":"","sources":["../../../src/ArcGisFeature/ArcGisSymbologyRenderer.ts"],"names":[],"mappings":"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"}
@@ -8,16 +8,19 @@ import { Angle } from "@itwin/core-geometry";
8
8
  /** @internal */
9
9
  const loggerCategory = "MapLayersFormats.ArcGISFeature";
10
10
  /** @internal */
11
- export class ArcGisSymbologyRenderer {
12
- static create(renderer, defaultSymbol) {
11
+ export class ArcGisSymbologyCanvasRenderer {
12
+ constructor() {
13
+ this.activeGeometryType = "";
14
+ }
15
+ static create(renderer, defaultSymbol, geometryType) {
13
16
  if (renderer?.type === "uniqueValue") {
14
- return new ArcGisUniqueValueSymbologyRenderer(renderer, defaultSymbol);
17
+ return new ArcGisUniqueValueSymbologyRenderer(renderer, defaultSymbol, geometryType);
15
18
  }
16
19
  else if (renderer?.type === "classBreaks") {
17
- return new ArcGisClassBreaksSymbologyRenderer(renderer, defaultSymbol);
20
+ return new ArcGisClassBreaksSymbologyRenderer(renderer, defaultSymbol, geometryType);
18
21
  }
19
22
  else {
20
- return new ArcGisSimpleSymbologyRenderer(renderer, defaultSymbol);
23
+ return new ArcGisSimpleSymbologyRenderer(renderer, defaultSymbol, geometryType);
21
24
  }
22
25
  }
23
26
  }
@@ -53,21 +56,23 @@ ArcGisDashLineStyle.dashValues = {
53
56
  };
54
57
  export { ArcGisDashLineStyle };
55
58
  /** @internal */
56
- export class ArcGisSimpleSymbologyRenderer extends ArcGisSymbologyRenderer {
59
+ export class ArcGisSimpleSymbologyRenderer extends ArcGisSymbologyCanvasRenderer {
57
60
  isAttributeDriven() { return false; }
58
- get symbol() { return this._symbol; }
59
- get defaultSymbol() { return this._defaultSymbol; }
60
- constructor(renderer, defaultSymbol) {
61
+ get symbol() { return (this._symbol ?? this.defaultSymbol); }
62
+ set symbol(symbol) { this._symbol = symbol; }
63
+ get defaultSymbol() { return this._defaultSymbol.getSymbology(this.activeGeometryType); }
64
+ constructor(renderer, defaultSymbol, geometryType) {
61
65
  super();
62
66
  this.lineWidthScaleFactor = 2; // This is value is empirical, this might need to be adjusted
63
67
  this._defaultSymbol = defaultSymbol;
68
+ // ArcGIS service normally advertise upfront he geometry of all features. It's always possible to opt-out, but then
69
+ // you will have to set the activeGeometryType before rendering.
70
+ if (geometryType)
71
+ this.activeGeometryType = geometryType;
64
72
  this.renderer = renderer;
65
73
  if (this.renderer?.type === "simple") {
66
74
  this._symbol = this.renderer.symbol;
67
75
  }
68
- else {
69
- this._symbol = defaultSymbol;
70
- }
71
76
  }
72
77
  applyFillStyle(context) {
73
78
  if (!context)
@@ -81,15 +86,16 @@ export class ArcGisSimpleSymbologyRenderer extends ArcGisSymbologyRenderer {
81
86
  }
82
87
  }
83
88
  getFillColor() {
89
+ const symbol = this.symbol;
84
90
  let fillColor;
85
- if (this._symbol.type === "esriSFS") {
86
- const sfs = this._symbol;
91
+ if (symbol.type === "esriSFS") {
92
+ const sfs = symbol;
87
93
  if (sfs.color) {
88
94
  fillColor = sfs.color;
89
95
  }
90
96
  }
91
- else if (this._symbol.type === "esriSMS") {
92
- const sms = this._symbol;
97
+ else if (symbol.type === "esriSMS") {
98
+ const sms = symbol;
93
99
  if (sms.color) {
94
100
  fillColor = sms.color;
95
101
  }
@@ -106,24 +112,25 @@ export class ArcGisSimpleSymbologyRenderer extends ArcGisSymbologyRenderer {
106
112
  return;
107
113
  // Stroke style can be from SFS's outline style or a SLS's color
108
114
  let sls;
109
- if (this._symbol.type === "esriSFS") {
110
- const sfs = this._symbol;
115
+ const symbol = this.symbol;
116
+ if (symbol.type === "esriSFS") {
117
+ const sfs = this.symbol;
111
118
  if (sfs.outline) {
112
119
  sls = sfs.outline;
113
120
  }
114
121
  }
115
- else if (this._symbol.type === "esriSLS") {
116
- sls = this._symbol;
122
+ else if (symbol.type === "esriSLS") {
123
+ sls = this.symbol;
117
124
  }
118
- else if (this._symbol.type === "esriSMS") {
119
- const sms = this._symbol;
125
+ else if (symbol.type === "esriSMS") {
126
+ const sms = this.symbol;
120
127
  if (sms.outline) {
121
128
  sls = sms.outline;
122
129
  }
123
130
  }
124
131
  if (sls) {
125
132
  context.lineWidth = (sls.width > 0 ? sls.width : 1);
126
- if (this._symbol.type === "esriSLS")
133
+ if (symbol.type === "esriSLS")
127
134
  context.lineWidth *= this.lineWidthScaleFactor;
128
135
  if (sls.color) {
129
136
  context.strokeStyle = sls.color.toRgbaString();
@@ -236,12 +243,15 @@ export class ArcGisSimpleSymbologyRenderer extends ArcGisSymbologyRenderer {
236
243
  drawPoint(context, ptX, ptY) {
237
244
  if (!context)
238
245
  return;
239
- if (this._symbol.type === "esriPMS") {
240
- const pms = this._symbol;
246
+ const symbol = this.symbol;
247
+ if (symbol.type === "esriPMS") {
248
+ const pms = this.symbol;
241
249
  const angleDegrees = pms.angle;
242
250
  // We scale up a little a bit the size of symbol.
243
- const width = pms.width === undefined ? pms.width : pms.width * 1.25;
244
- const height = pms.height === undefined ? pms.height : pms.height * 1.25;
251
+ // const width = pms.width === undefined ? pms.width : pms.width * 1.25;
252
+ // const height = pms.height === undefined ? pms.height : pms.height * 1.25;
253
+ const width = pms.width;
254
+ const height = pms.height;
245
255
  let xOffset = 0, yOffset = 0;
246
256
  // Center the marker around the anchor point
247
257
  if (width)
@@ -271,8 +281,8 @@ export class ArcGisSimpleSymbologyRenderer extends ArcGisSymbologyRenderer {
271
281
  if (angleDegrees)
272
282
  context.restore();
273
283
  }
274
- else if (this._symbol.type === "esriSMS") {
275
- const sms = this._symbol;
284
+ else if (symbol.type === "esriSMS") {
285
+ const sms = this.symbol;
276
286
  let xOffset = 0;
277
287
  let yOffset = 0;
278
288
  if (sms.xoffset)
@@ -286,19 +296,17 @@ export class ArcGisSimpleSymbologyRenderer extends ArcGisSymbologyRenderer {
286
296
  /** @internal */
287
297
  export class ArcGisUniqueValueSymbologyRenderer extends ArcGisSimpleSymbologyRenderer {
288
298
  isAttributeDriven() { return true; }
299
+ get defaultSymbol() { return this._defaultRenderSymbol ?? super.defaultSymbol; }
289
300
  get rendererFields() {
290
301
  if (this.uvRenderer.field1)
291
302
  return [this.uvRenderer.field1];
292
303
  else
293
304
  return undefined;
294
305
  }
295
- constructor(renderer, defaultSymbol) {
296
- super(renderer, defaultSymbol);
306
+ constructor(renderer, defaultSymbol, geometryType) {
307
+ super(renderer, defaultSymbol, geometryType);
297
308
  this.uvRenderer = this.renderer;
298
- if (this.uvRenderer.defaultSymbol) {
299
- this._defaultSymbol = this.uvRenderer.defaultSymbol;
300
- this._symbol = this.defaultSymbol;
301
- }
309
+ this._defaultRenderSymbol = this.uvRenderer.defaultSymbol;
302
310
  }
303
311
  setActiveFeatureAttributes(attributes) {
304
312
  this._activeFeatureAttributes = attributes;
@@ -311,7 +319,7 @@ export class ArcGisUniqueValueSymbologyRenderer extends ArcGisSimpleSymbologyRen
311
319
  // Strangely, ArcGIS documentation says 'value' is a string,
312
320
  // not too sure if a comparison on other types is possible, or its always forced to string properties?
313
321
  if (uvi.value === queryValue.toString()) {
314
- this._symbol = uvi.symbol;
322
+ this.symbol = uvi.symbol;
315
323
  newSymbolApplied = true;
316
324
  break;
317
325
  }
@@ -321,26 +329,24 @@ export class ArcGisUniqueValueSymbologyRenderer extends ArcGisSimpleSymbologyRen
321
329
  }
322
330
  // Fallback to default symbology to make sure we render something
323
331
  if (!newSymbolApplied) {
324
- this._symbol = this.defaultSymbol;
332
+ this.symbol = undefined;
325
333
  }
326
334
  }
327
335
  }
328
336
  /** @internal */
329
337
  export class ArcGisClassBreaksSymbologyRenderer extends ArcGisSimpleSymbologyRenderer {
330
338
  isAttributeDriven() { return true; }
339
+ get defaultSymbol() { return this._defaultRenderSymbol ?? super.defaultSymbol; }
331
340
  get rendererFields() {
332
341
  if (this.cbRenderer)
333
342
  return [this.cbRenderer.field];
334
343
  else
335
344
  return undefined;
336
345
  }
337
- constructor(renderer, defaultSymbol) {
338
- super(renderer, defaultSymbol);
346
+ constructor(renderer, defaultSymbol, geometryType) {
347
+ super(renderer, defaultSymbol, geometryType);
339
348
  this.cbRenderer = this.renderer;
340
- if (this.cbRenderer.defaultSymbol) {
341
- this._defaultSymbol = this.cbRenderer.defaultSymbol;
342
- this._symbol = this.defaultSymbol;
343
- }
349
+ this._defaultRenderSymbol = this.cbRenderer.defaultSymbol;
344
350
  }
345
351
  setActiveFeatureAttributes(attributes) {
346
352
  this._activeFeatureAttributes = attributes;
@@ -364,7 +370,7 @@ export class ArcGisClassBreaksSymbologyRenderer extends ArcGisSimpleSymbologyRen
364
370
  }
365
371
  if (queryValue >= currentMinValue
366
372
  && queryValue <= currentClass.classMaxValue) {
367
- this._symbol = currentClass.symbol;
373
+ this.symbol = currentClass.symbol;
368
374
  return;
369
375
  }
370
376
  } while (++currentClassIdx < this.cbRenderer.classBreakInfos.length);
@@ -372,7 +378,7 @@ export class ArcGisClassBreaksSymbologyRenderer extends ArcGisSimpleSymbologyRen
372
378
  }
373
379
  // Fallback to default symbology to make sure we render something
374
380
  if (!newSymbolApplied) {
375
- this._symbol = this.defaultSymbol;
381
+ this.symbol = this.defaultSymbol;
376
382
  }
377
383
  }
378
384
  }