@itwin/map-layers-formats 4.1.0-dev.62 → 4.1.0-dev.66

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 (50) hide show
  1. package/CHANGELOG.md +16 -1
  2. package/lib/cjs/ArcGisFeature/ArcGisCanvasRenderer.d.ts +3 -1
  3. package/lib/cjs/ArcGisFeature/ArcGisCanvasRenderer.d.ts.map +1 -1
  4. package/lib/cjs/ArcGisFeature/ArcGisCanvasRenderer.js +4 -0
  5. package/lib/cjs/ArcGisFeature/ArcGisCanvasRenderer.js.map +1 -1
  6. package/lib/cjs/ArcGisFeature/ArcGisFeatureProvider.d.ts +10 -4
  7. package/lib/cjs/ArcGisFeature/ArcGisFeatureProvider.d.ts.map +1 -1
  8. package/lib/cjs/ArcGisFeature/ArcGisFeatureProvider.js +71 -12
  9. package/lib/cjs/ArcGisFeature/ArcGisFeatureProvider.js.map +1 -1
  10. package/lib/cjs/ArcGisFeature/ArcGisJsonFeatureReader.d.ts +1 -0
  11. package/lib/cjs/ArcGisFeature/ArcGisJsonFeatureReader.d.ts.map +1 -1
  12. package/lib/cjs/ArcGisFeature/ArcGisJsonFeatureReader.js +18 -0
  13. package/lib/cjs/ArcGisFeature/ArcGisJsonFeatureReader.js.map +1 -1
  14. package/lib/cjs/ArcGisFeature/ArcGisPbfFeatureReader.d.ts +9 -1
  15. package/lib/cjs/ArcGisFeature/ArcGisPbfFeatureReader.d.ts.map +1 -1
  16. package/lib/cjs/ArcGisFeature/ArcGisPbfFeatureReader.js +144 -110
  17. package/lib/cjs/ArcGisFeature/ArcGisPbfFeatureReader.js.map +1 -1
  18. package/lib/cjs/ArcGisFeature/ArcGisSymbologyRenderer.d.ts +32 -77
  19. package/lib/cjs/ArcGisFeature/ArcGisSymbologyRenderer.d.ts.map +1 -1
  20. package/lib/cjs/ArcGisFeature/ArcGisSymbologyRenderer.js +88 -128
  21. package/lib/cjs/ArcGisFeature/ArcGisSymbologyRenderer.js.map +1 -1
  22. package/lib/cjs/ArcGisFeature/EsriSymbology.d.ts +152 -0
  23. package/lib/cjs/ArcGisFeature/EsriSymbology.d.ts.map +1 -0
  24. package/lib/cjs/ArcGisFeature/EsriSymbology.js +181 -0
  25. package/lib/cjs/ArcGisFeature/EsriSymbology.js.map +1 -0
  26. package/lib/esm/ArcGisFeature/ArcGisCanvasRenderer.d.ts +3 -1
  27. package/lib/esm/ArcGisFeature/ArcGisCanvasRenderer.d.ts.map +1 -1
  28. package/lib/esm/ArcGisFeature/ArcGisCanvasRenderer.js +4 -0
  29. package/lib/esm/ArcGisFeature/ArcGisCanvasRenderer.js.map +1 -1
  30. package/lib/esm/ArcGisFeature/ArcGisFeatureProvider.d.ts +10 -4
  31. package/lib/esm/ArcGisFeature/ArcGisFeatureProvider.d.ts.map +1 -1
  32. package/lib/esm/ArcGisFeature/ArcGisFeatureProvider.js +71 -12
  33. package/lib/esm/ArcGisFeature/ArcGisFeatureProvider.js.map +1 -1
  34. package/lib/esm/ArcGisFeature/ArcGisJsonFeatureReader.d.ts +1 -0
  35. package/lib/esm/ArcGisFeature/ArcGisJsonFeatureReader.d.ts.map +1 -1
  36. package/lib/esm/ArcGisFeature/ArcGisJsonFeatureReader.js +18 -0
  37. package/lib/esm/ArcGisFeature/ArcGisJsonFeatureReader.js.map +1 -1
  38. package/lib/esm/ArcGisFeature/ArcGisPbfFeatureReader.d.ts +9 -1
  39. package/lib/esm/ArcGisFeature/ArcGisPbfFeatureReader.d.ts.map +1 -1
  40. package/lib/esm/ArcGisFeature/ArcGisPbfFeatureReader.js +144 -110
  41. package/lib/esm/ArcGisFeature/ArcGisPbfFeatureReader.js.map +1 -1
  42. package/lib/esm/ArcGisFeature/ArcGisSymbologyRenderer.d.ts +32 -77
  43. package/lib/esm/ArcGisFeature/ArcGisSymbologyRenderer.d.ts.map +1 -1
  44. package/lib/esm/ArcGisFeature/ArcGisSymbologyRenderer.js +84 -124
  45. package/lib/esm/ArcGisFeature/ArcGisSymbologyRenderer.js.map +1 -1
  46. package/lib/esm/ArcGisFeature/EsriSymbology.d.ts +152 -0
  47. package/lib/esm/ArcGisFeature/EsriSymbology.d.ts.map +1 -0
  48. package/lib/esm/ArcGisFeature/EsriSymbology.js +170 -0
  49. package/lib/esm/ArcGisFeature/EsriSymbology.js.map +1 -0
  50. package/package.json +11 -11
@@ -1,14 +1,22 @@
1
1
  import { esriPBuffer } from "../ArcGisFeature/esriPBuffer.gen";
2
- import { ArcGisGeometryRenderer, ArcGisGraphicsRenderer, MapLayerFeatureInfo } from "@itwin/core-frontend";
2
+ import { ArcGisGeometryRenderer, ArcGisGraphicsRenderer, 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";
6
6
  import { ArcGisFeatureGeometryType } from "./ArcGisFeatureQuery";
7
+ interface PbfFieldInfo {
8
+ name: string;
9
+ type: esriPBuffer.FeatureCollectionPBuffer.FieldType;
10
+ }
7
11
  /** @internal */
8
12
  export declare class ArcGisPbfFeatureReader extends ArcGisBaseFeatureReader {
9
13
  constructor(settings: ImageMapLayerSettings, layerMetadata: any);
10
14
  static getArcGisFeatureGeometryType(geomType: esriPBuffer.FeatureCollectionPBuffer.GeometryType): ArcGisFeatureGeometryType;
15
+ private getNumericValue;
16
+ getFeatureAttribute(fieldInfo: PbfFieldInfo, attrValue: esriPBuffer.FeatureCollectionPBuffer.Value): MapLayerFeatureAttribute | undefined;
11
17
  readAndRender(response: ArcGisResponseData, renderer: ArcGisGeometryRenderer): Promise<void>;
18
+ private applySymbologyAttributes;
12
19
  readFeatureInfo(response: ArcGisResponseData, featureInfos: MapLayerFeatureInfo[], renderer?: ArcGisGraphicsRenderer): Promise<void>;
13
20
  }
21
+ export {};
14
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,EAAE,sBAAsB,EAAE,sBAAsB,EAA6C,mBAAmB,EAAyB,MAAM,sBAAsB,CAAC;AAE7K,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;AAUjE,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;IAiBrH,aAAa,CAAC,QAAQ,EAAE,kBAAkB,EAAE,QAAQ,EAAE,sBAAsB;IA2B5E,eAAe,CAAC,QAAQ,EAAE,kBAAkB,EAAE,YAAY,EAAE,mBAAmB,EAAE,EAAE,QAAQ,CAAC,EAAE,sBAAsB;CA8JlI"}
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"}
@@ -32,6 +32,104 @@ class ArcGisPbfFeatureReader extends ArcGisFeatureReader_1.ArcGisBaseFeatureRead
32
32
  return "esriGeometryNull";
33
33
  }
34
34
  }
35
+ getNumericValue(attrValue) {
36
+ const propertyValue = { valueFormat: appui_abstract_1.PropertyValueFormat.Primitive };
37
+ let typename = appui_abstract_1.StandardTypeNames.Number;
38
+ if (attrValue.has_double_value) {
39
+ const value = this.toFixedWithoutPadding(attrValue.double_value);
40
+ propertyValue.value = value;
41
+ typename = appui_abstract_1.StandardTypeNames.Double;
42
+ }
43
+ else if (attrValue.has_float_value) {
44
+ const value = this.toFixedWithoutPadding(attrValue.float_value);
45
+ propertyValue.value = value;
46
+ typename = appui_abstract_1.StandardTypeNames.Float;
47
+ }
48
+ else if (attrValue.has_int64_value) {
49
+ propertyValue.value = attrValue.int64_value;
50
+ typename = appui_abstract_1.StandardTypeNames.Integer;
51
+ }
52
+ else if (attrValue.has_sint64_value) {
53
+ propertyValue.value = attrValue.sint64_value;
54
+ typename = appui_abstract_1.StandardTypeNames.Integer;
55
+ }
56
+ else if (attrValue.has_sint_value) {
57
+ propertyValue.value = attrValue.sint_value;
58
+ typename = appui_abstract_1.StandardTypeNames.Integer;
59
+ }
60
+ else if (attrValue.has_uint64_value) {
61
+ propertyValue.value = attrValue.uint64_value;
62
+ typename = appui_abstract_1.StandardTypeNames.Integer;
63
+ }
64
+ else if (attrValue.has_uint_value) {
65
+ propertyValue.value = attrValue.uint_value;
66
+ typename = appui_abstract_1.StandardTypeNames.Integer;
67
+ }
68
+ else {
69
+ propertyValue.value = undefined;
70
+ }
71
+ return { propertyValue, typename };
72
+ }
73
+ getFeatureAttribute(fieldInfo, attrValue) {
74
+ let propertyValue = { valueFormat: appui_abstract_1.PropertyValueFormat.Primitive };
75
+ let typename = appui_abstract_1.StandardTypeNames.String;
76
+ if (fieldInfo.type === esriPBuffer_gen_1.esriPBuffer.FeatureCollectionPBuffer.FieldType.esriFieldTypeDouble
77
+ || fieldInfo.type === esriPBuffer_gen_1.esriPBuffer.FeatureCollectionPBuffer.FieldType.esriFieldTypeInteger
78
+ || fieldInfo.type === esriPBuffer_gen_1.esriPBuffer.FeatureCollectionPBuffer.FieldType.esriFieldTypeSmallInteger
79
+ || fieldInfo.type === esriPBuffer_gen_1.esriPBuffer.FeatureCollectionPBuffer.FieldType.esriFieldTypeOID
80
+ || fieldInfo.type === esriPBuffer_gen_1.esriPBuffer.FeatureCollectionPBuffer.FieldType.esriFieldTypeSingle
81
+ || fieldInfo.type === esriPBuffer_gen_1.esriPBuffer.FeatureCollectionPBuffer.FieldType.esriFieldTypeDate) {
82
+ const value = this.getNumericValue(attrValue);
83
+ if (value.propertyValue === undefined) {
84
+ core_bentley_1.Logger.logError(loggerCategory, `Could not read numeric value for field ${fieldInfo.name}`);
85
+ return undefined;
86
+ }
87
+ if (fieldInfo.type === esriPBuffer_gen_1.esriPBuffer.FeatureCollectionPBuffer.FieldType.esriFieldTypeDate) {
88
+ const test = value.propertyValue.value;
89
+ propertyValue.value = new Date(test);
90
+ typename = appui_abstract_1.StandardTypeNames.DateTime;
91
+ }
92
+ else {
93
+ typename = value.typename;
94
+ propertyValue = value.propertyValue;
95
+ }
96
+ }
97
+ else if (fieldInfo.type === esriPBuffer_gen_1.esriPBuffer.FeatureCollectionPBuffer.FieldType.esriFieldTypeString) {
98
+ if (attrValue.has_string_value) {
99
+ propertyValue.value = attrValue.string_value;
100
+ typename = appui_abstract_1.StandardTypeNames.String;
101
+ }
102
+ }
103
+ else if (fieldInfo.type === esriPBuffer_gen_1.esriPBuffer.FeatureCollectionPBuffer.FieldType.esriFieldTypeGlobalID) {
104
+ if (attrValue.has_string_value) {
105
+ propertyValue.value = attrValue.string_value;
106
+ typename = appui_abstract_1.StandardTypeNames.String;
107
+ }
108
+ else {
109
+ const value = this.getNumericValue(attrValue);
110
+ if (value.propertyValue === undefined) {
111
+ core_bentley_1.Logger.logError(loggerCategory, `Could not read GlobalId value for field ${fieldInfo.name}`);
112
+ return undefined;
113
+ }
114
+ }
115
+ }
116
+ else if (attrValue.has_string_value) {
117
+ // If we reach this case that probably mean we don't support the field type, simply try to output string value
118
+ typename = appui_abstract_1.StandardTypeNames.String;
119
+ propertyValue.value = attrValue.string_value;
120
+ }
121
+ else if (attrValue.value_type === "none") {
122
+ // Sometimes fields are just empty, use an empty string
123
+ typename = appui_abstract_1.StandardTypeNames.String;
124
+ propertyValue.value = undefined;
125
+ }
126
+ else {
127
+ core_bentley_1.Logger.logError(loggerCategory, `Could not read value for field ${fieldInfo.name}`);
128
+ return undefined;
129
+ }
130
+ propertyValue.displayValue = this.getDisplayValue(typename, propertyValue.value);
131
+ return { value: propertyValue, property: { name: fieldInfo.name, displayLabel: fieldInfo.name, typename } };
132
+ }
35
133
  async readAndRender(response, renderer) {
36
134
  if (!(response.data instanceof esriPBuffer_gen_1.esriPBuffer.FeatureCollectionPBuffer)) {
37
135
  const msg = "Response was not in PBF format";
@@ -41,19 +139,53 @@ class ArcGisPbfFeatureReader extends ArcGisFeatureReader_1.ArcGisBaseFeatureRead
41
139
  const collection = response.data;
42
140
  if (!collection.has_queryResult || !collection.queryResult.has_featureResult || collection?.queryResult?.featureResult?.features === undefined)
43
141
  return;
142
+ const attrSymbology = renderer.attributeSymbology;
143
+ // Fields metadata is stored outside feature results, create dedicated array first
144
+ const fields = [];
145
+ for (const field of collection.queryResult.featureResult.fields)
146
+ fields.push({ name: field.name, type: field.fieldType });
44
147
  const geomType = collection.queryResult.featureResult.geometryType;
45
148
  const stride = (collection.queryResult.featureResult.hasM || collection.queryResult.featureResult.hasZ) ? 3 : 2;
46
- // console.log(`Nb Feature: ${collection.queryResult.featureResult.features.length}`);
47
- if (geomType === esriGeometryType.esriGeometryTypePoint ||
48
- geomType === esriGeometryType.esriGeometryTypeMultipoint) {
49
- for (const feature of collection.queryResult.featureResult.features)
50
- await renderer.renderPoint(feature.geometry.lengths, feature.geometry.coords, stride, renderer.transform === undefined);
51
- }
52
- else if (geomType === esriGeometryType.esriGeometryTypePolyline || geomType === esriGeometryType.esriGeometryTypePolygon) {
53
- const fill = (geomType === esriGeometryType.esriGeometryTypePolygon);
54
- for (const feature of collection.queryResult.featureResult.features)
55
- if (feature?.has_geometry)
56
- await renderer.renderPath(feature.geometry.lengths, feature.geometry.coords, fill, stride, renderer.transform === undefined);
149
+ const relativeCoords = renderer.transform === undefined;
150
+ for (const feature of collection.queryResult.featureResult.features) {
151
+ // Render geometries
152
+ if (renderer && feature?.has_geometry) {
153
+ if (attrSymbology) {
154
+ // Read attributes if needed (attribute driven symbology)
155
+ this.applySymbologyAttributes(attrSymbology, feature, fields);
156
+ }
157
+ if (geomType === esriGeometryType.esriGeometryTypePoint || geomType === esriGeometryType.esriGeometryTypeMultipoint) {
158
+ await renderer.renderPoint(feature.geometry.lengths, feature.geometry.coords, stride, relativeCoords);
159
+ }
160
+ else if (geomType === esriGeometryType.esriGeometryTypePolyline || geomType === esriGeometryType.esriGeometryTypePolygon) {
161
+ const fill = (geomType === esriGeometryType.esriGeometryTypePolygon);
162
+ await renderer.renderPath(feature.geometry.lengths, feature.geometry.coords, fill, stride, relativeCoords);
163
+ }
164
+ }
165
+ }
166
+ }
167
+ applySymbologyAttributes(attrSymbology, feature, fields) {
168
+ if (attrSymbology) {
169
+ const symbolFields = attrSymbology.rendererFields;
170
+ if (symbolFields && symbolFields.length > 0 && feature.attributes) {
171
+ let fieldIdx = 0;
172
+ const featureAttr = {};
173
+ for (const attrValue of feature.attributes) {
174
+ if (fieldIdx > fields.length) {
175
+ core_bentley_1.Logger.logError(loggerCategory, "Error while read feature info data: fields metadata missing");
176
+ break;
177
+ }
178
+ const fieldInfo = fields[fieldIdx++];
179
+ if (symbolFields.includes(fieldInfo.name)) {
180
+ const attr = this.getFeatureAttribute(fieldInfo, attrValue);
181
+ if (attr) {
182
+ const primitiveValue = attr.value;
183
+ featureAttr[fieldInfo.name] = primitiveValue.value;
184
+ }
185
+ }
186
+ }
187
+ attrSymbology.setActiveFeatureAttributes(featureAttr);
188
+ }
57
189
  }
58
190
  }
59
191
  async readFeatureInfo(response, featureInfos, renderer) {
@@ -68,104 +200,6 @@ class ArcGisPbfFeatureReader extends ArcGisFeatureReader_1.ArcGisBaseFeatureRead
68
200
  const fields = [];
69
201
  for (const field of collection.queryResult.featureResult.fields)
70
202
  fields.push({ name: field.name, type: field.fieldType });
71
- const getNumericValue = (attrValue) => {
72
- const propertyValue = { valueFormat: appui_abstract_1.PropertyValueFormat.Primitive };
73
- let typename = appui_abstract_1.StandardTypeNames.Number;
74
- if (attrValue.has_double_value) {
75
- const value = this.toFixedWithoutPadding(attrValue.double_value);
76
- propertyValue.value = value;
77
- typename = appui_abstract_1.StandardTypeNames.Double;
78
- }
79
- else if (attrValue.has_float_value) {
80
- const value = this.toFixedWithoutPadding(attrValue.float_value);
81
- propertyValue.value = value;
82
- typename = appui_abstract_1.StandardTypeNames.Float;
83
- }
84
- else if (attrValue.has_int64_value) {
85
- propertyValue.value = attrValue.int64_value;
86
- typename = appui_abstract_1.StandardTypeNames.Integer;
87
- }
88
- else if (attrValue.has_sint64_value) {
89
- propertyValue.value = attrValue.sint64_value;
90
- typename = appui_abstract_1.StandardTypeNames.Integer;
91
- }
92
- else if (attrValue.has_sint_value) {
93
- propertyValue.value = attrValue.sint_value;
94
- typename = appui_abstract_1.StandardTypeNames.Integer;
95
- }
96
- else if (attrValue.has_uint64_value) {
97
- propertyValue.value = attrValue.uint64_value;
98
- typename = appui_abstract_1.StandardTypeNames.Integer;
99
- }
100
- else if (attrValue.has_uint_value) {
101
- propertyValue.value = attrValue.uint_value;
102
- typename = appui_abstract_1.StandardTypeNames.Integer;
103
- }
104
- else {
105
- propertyValue.value = undefined;
106
- }
107
- return { propertyValue, typename };
108
- };
109
- const getFeatureAttribute = (fieldInfo, attrValue) => {
110
- let propertyValue = { valueFormat: appui_abstract_1.PropertyValueFormat.Primitive };
111
- let typename = appui_abstract_1.StandardTypeNames.String;
112
- if (fieldInfo.type === esriPBuffer_gen_1.esriPBuffer.FeatureCollectionPBuffer.FieldType.esriFieldTypeDouble
113
- || fieldInfo.type === esriPBuffer_gen_1.esriPBuffer.FeatureCollectionPBuffer.FieldType.esriFieldTypeInteger
114
- || fieldInfo.type === esriPBuffer_gen_1.esriPBuffer.FeatureCollectionPBuffer.FieldType.esriFieldTypeSmallInteger
115
- || fieldInfo.type === esriPBuffer_gen_1.esriPBuffer.FeatureCollectionPBuffer.FieldType.esriFieldTypeOID
116
- || fieldInfo.type === esriPBuffer_gen_1.esriPBuffer.FeatureCollectionPBuffer.FieldType.esriFieldTypeSingle
117
- || fieldInfo.type === esriPBuffer_gen_1.esriPBuffer.FeatureCollectionPBuffer.FieldType.esriFieldTypeDate) {
118
- const value = getNumericValue(attrValue);
119
- if (value.propertyValue === undefined) {
120
- core_bentley_1.Logger.logError(loggerCategory, `Could not read numeric value for field ${fieldInfo.name}`);
121
- return undefined;
122
- }
123
- if (fieldInfo.type === esriPBuffer_gen_1.esriPBuffer.FeatureCollectionPBuffer.FieldType.esriFieldTypeDate) {
124
- const test = value.propertyValue.value;
125
- propertyValue.value = new Date(test);
126
- typename = appui_abstract_1.StandardTypeNames.DateTime;
127
- }
128
- else {
129
- typename = value.typename;
130
- propertyValue = value.propertyValue;
131
- }
132
- }
133
- else if (fieldInfo.type === esriPBuffer_gen_1.esriPBuffer.FeatureCollectionPBuffer.FieldType.esriFieldTypeString) {
134
- if (attrValue.has_string_value) {
135
- propertyValue.value = attrValue.string_value;
136
- typename = appui_abstract_1.StandardTypeNames.String;
137
- }
138
- }
139
- else if (fieldInfo.type === esriPBuffer_gen_1.esriPBuffer.FeatureCollectionPBuffer.FieldType.esriFieldTypeGlobalID) {
140
- if (attrValue.has_string_value) {
141
- propertyValue.value = attrValue.string_value;
142
- typename = appui_abstract_1.StandardTypeNames.String;
143
- }
144
- else {
145
- const value = getNumericValue(attrValue);
146
- if (value.propertyValue === undefined) {
147
- core_bentley_1.Logger.logError(loggerCategory, `Could not read GlobalId value for field ${fieldInfo.name}`);
148
- return undefined;
149
- }
150
- }
151
- }
152
- else if (attrValue.has_string_value) {
153
- // If we reach this case that probably mean we don't support the field type, simply try to output string value
154
- typename = appui_abstract_1.StandardTypeNames.String;
155
- propertyValue.value = attrValue.string_value;
156
- }
157
- else if (attrValue.value_type === "none") {
158
- // Sometimes fields are just empty, use an empty string
159
- typename = appui_abstract_1.StandardTypeNames.String;
160
- propertyValue.value = undefined;
161
- }
162
- else {
163
- core_bentley_1.Logger.logError(loggerCategory, `Could not read value for field ${fieldInfo.name}`);
164
- return undefined;
165
- }
166
- propertyValue.displayValue = this.getDisplayValue(typename, propertyValue.value);
167
- return { value: propertyValue, property: { name: fieldInfo.name, displayLabel: fieldInfo.name, typename } };
168
- };
169
203
  const geomType = collection.queryResult.featureResult.geometryType;
170
204
  const stride = (collection.queryResult.featureResult.hasM || collection.queryResult.featureResult.hasZ) ? 3 : 2;
171
205
  const subLayerInfo = {
@@ -196,7 +230,7 @@ class ArcGisPbfFeatureReader extends ArcGisFeatureReader_1.ArcGisBaseFeatureRead
196
230
  break;
197
231
  }
198
232
  // Convert everything to string for now
199
- const attr = getFeatureAttribute(fields[fieldIdx], attrValue);
233
+ const attr = this.getFeatureAttribute(fields[fieldIdx], attrValue);
200
234
  if (attr) {
201
235
  feature.attributes?.push(attr);
202
236
  }
@@ -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 { ArcGisGeometryRenderer, ArcGisGraphicsRenderer, MapLayerFeature, MapLayerFeatureAttribute, MapLayerFeatureInfo, MapSubLayerFeatureInfo} from \"@itwin/core-frontend\";\r\nimport { PrimitiveValue, PropertyValueFormat, StandardTypeNames } from \"@itwin/appui-abstract\";\r\nimport { ImageMapLayerSettings } from \"@itwin/core-common\";\r\nimport { ArcGisBaseFeatureReader } from \"./ArcGisFeatureReader\";\r\nimport { ArcGisResponseData } from \"./ArcGisFeatureResponse\";\r\nimport { Logger } from \"@itwin/core-bentley\";\r\nimport { ArcGisFeatureGeometryType } from \"./ArcGisFeatureQuery\";\r\n\r\nconst esriGeometryType = esriPBuffer.FeatureCollectionPBuffer.GeometryType;\r\nconst loggerCategory = \"MapLayersFormats.ArcGISFeature\";\r\n\r\ninterface PbfFieldInfo {\r\n name: string;\r\n type: esriPBuffer.FeatureCollectionPBuffer.FieldType;\r\n}\r\n\r\n/** @internal */\r\nexport class ArcGisPbfFeatureReader extends ArcGisBaseFeatureReader {\r\n public constructor(settings: ImageMapLayerSettings, layerMetadata: any) {\r\n super(settings, layerMetadata);\r\n }\r\n\r\n public static getArcGisFeatureGeometryType(geomType: esriPBuffer.FeatureCollectionPBuffer.GeometryType): ArcGisFeatureGeometryType {\r\n switch (geomType) {\r\n case esriPBuffer.FeatureCollectionPBuffer.GeometryType.esriGeometryTypeMultipatch:\r\n return \"esriGeometryMultiPatch\";\r\n case esriPBuffer.FeatureCollectionPBuffer.GeometryType.esriGeometryTypeMultipoint:\r\n return \"esriGeometryMultipoint\";\r\n case esriPBuffer.FeatureCollectionPBuffer.GeometryType.esriGeometryTypePoint:\r\n return \"esriGeometryPoint\";\r\n case esriPBuffer.FeatureCollectionPBuffer.GeometryType.esriGeometryTypePolygon:\r\n return \"esriGeometryPolygon\";\r\n case esriPBuffer.FeatureCollectionPBuffer.GeometryType.esriGeometryTypePolyline:\r\n return \"esriGeometryPolyline\";\r\n default:\r\n return \"esriGeometryNull\";\r\n }\r\n }\r\n\r\n public async readAndRender(response: ArcGisResponseData, renderer: ArcGisGeometryRenderer) {\r\n if (!(response.data instanceof esriPBuffer.FeatureCollectionPBuffer)) {\r\n const msg = \"Response was not in PBF format\";\r\n Logger.logError(loggerCategory, msg);\r\n return;\r\n }\r\n\r\n const collection = response.data;\r\n if (!collection.has_queryResult || !collection.queryResult.has_featureResult || collection?.queryResult?.featureResult?.features === undefined)\r\n return;\r\n\r\n const geomType = collection.queryResult.featureResult.geometryType;\r\n const stride = (collection.queryResult.featureResult.hasM || collection.queryResult.featureResult.hasZ) ? 3 : 2;\r\n\r\n // console.log(`Nb Feature: ${collection.queryResult.featureResult.features.length}`);\r\n if (geomType === esriGeometryType.esriGeometryTypePoint ||\r\n geomType === esriGeometryType.esriGeometryTypeMultipoint) {\r\n for (const feature of collection.queryResult.featureResult.features)\r\n await renderer.renderPoint(feature.geometry.lengths, feature.geometry.coords, stride, renderer.transform === undefined);\r\n } else if (geomType === esriGeometryType.esriGeometryTypePolyline || geomType === esriGeometryType.esriGeometryTypePolygon) {\r\n const fill = (geomType === esriGeometryType.esriGeometryTypePolygon);\r\n for (const feature of collection.queryResult.featureResult.features)\r\n if (feature?.has_geometry)\r\n await renderer.renderPath(feature.geometry.lengths, feature.geometry.coords, fill, stride, renderer.transform === undefined);\r\n }\r\n }\r\n\r\n public async readFeatureInfo(response: ArcGisResponseData, featureInfos: MapLayerFeatureInfo[], renderer?: ArcGisGraphicsRenderer) {\r\n if (!(response.data instanceof esriPBuffer.FeatureCollectionPBuffer)) {\r\n\r\n Logger.logError(loggerCategory, \"Response was not in PBF format\");\r\n }\r\n\r\n const collection = response.data as esriPBuffer.FeatureCollectionPBuffer;\r\n if (!collection.has_queryResult || !collection.queryResult.has_featureResult || collection?.queryResult?.featureResult?.features === undefined)\r\n return;\r\n\r\n const layerInfo: MapLayerFeatureInfo = { layerName: this._settings.name, subLayerInfos: [] };\r\n\r\n // Fields metadata is stored outside feature results, create dedicated array first\r\n const fields: PbfFieldInfo[] = [];\r\n for (const field of collection.queryResult.featureResult.fields)\r\n fields.push({name: field.name, type:field.fieldType});\r\n\r\n const 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 const 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 = 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 = 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 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 = 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":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\nimport { esriPBuffer } from \"../ArcGisFeature/esriPBuffer.gen\";\r\nimport { ArcGisAttributeDrivenSymbology, ArcGisGeometryRenderer, ArcGisGraphicsRenderer, MapLayerFeature, MapLayerFeatureAttribute, MapLayerFeatureInfo, MapSubLayerFeatureInfo} from \"@itwin/core-frontend\";\r\nimport { PrimitiveValue, PropertyValueFormat, StandardTypeNames } from \"@itwin/appui-abstract\";\r\nimport { ImageMapLayerSettings } from \"@itwin/core-common\";\r\nimport { ArcGisBaseFeatureReader } from \"./ArcGisFeatureReader\";\r\nimport { ArcGisResponseData } from \"./ArcGisFeatureResponse\";\r\nimport { Logger } from \"@itwin/core-bentley\";\r\nimport { ArcGisFeatureGeometryType } from \"./ArcGisFeatureQuery\";\r\n\r\nconst esriGeometryType = esriPBuffer.FeatureCollectionPBuffer.GeometryType;\r\nconst loggerCategory = \"MapLayersFormats.ArcGISFeature\";\r\n\r\ninterface PbfFieldInfo {\r\n name: string;\r\n type: esriPBuffer.FeatureCollectionPBuffer.FieldType;\r\n}\r\n\r\n/** @internal */\r\nexport class ArcGisPbfFeatureReader extends ArcGisBaseFeatureReader {\r\n public constructor(settings: ImageMapLayerSettings, layerMetadata: any) {\r\n super(settings, layerMetadata);\r\n }\r\n\r\n public static getArcGisFeatureGeometryType(geomType: esriPBuffer.FeatureCollectionPBuffer.GeometryType): ArcGisFeatureGeometryType {\r\n switch (geomType) {\r\n case esriPBuffer.FeatureCollectionPBuffer.GeometryType.esriGeometryTypeMultipatch:\r\n return \"esriGeometryMultiPatch\";\r\n case esriPBuffer.FeatureCollectionPBuffer.GeometryType.esriGeometryTypeMultipoint:\r\n return \"esriGeometryMultipoint\";\r\n case esriPBuffer.FeatureCollectionPBuffer.GeometryType.esriGeometryTypePoint:\r\n return \"esriGeometryPoint\";\r\n case esriPBuffer.FeatureCollectionPBuffer.GeometryType.esriGeometryTypePolygon:\r\n return \"esriGeometryPolygon\";\r\n case esriPBuffer.FeatureCollectionPBuffer.GeometryType.esriGeometryTypePolyline:\r\n return \"esriGeometryPolyline\";\r\n default:\r\n return \"esriGeometryNull\";\r\n }\r\n }\r\n\r\n private getNumericValue(attrValue: esriPBuffer.FeatureCollectionPBuffer.Value) {\r\n const propertyValue: PrimitiveValue = { valueFormat: PropertyValueFormat.Primitive };\r\n let typename = StandardTypeNames.Number;\r\n if (attrValue.has_double_value) {\r\n const value = this.toFixedWithoutPadding(attrValue.double_value);\r\n propertyValue.value = value;\r\n typename = StandardTypeNames.Double;\r\n } else if (attrValue.has_float_value) {\r\n const value = this.toFixedWithoutPadding(attrValue.float_value);\r\n propertyValue.value = value;\r\n typename = StandardTypeNames.Float;\r\n } else if (attrValue.has_int64_value) {\r\n propertyValue.value = attrValue.int64_value;\r\n typename = StandardTypeNames.Integer;\r\n } else if (attrValue.has_sint64_value) {\r\n propertyValue.value = attrValue.sint64_value;\r\n typename = StandardTypeNames.Integer;\r\n } else if (attrValue.has_sint_value) {\r\n propertyValue.value = attrValue.sint_value;\r\n typename = StandardTypeNames.Integer;\r\n } else if (attrValue.has_uint64_value) {\r\n propertyValue.value = attrValue.uint64_value;\r\n typename = StandardTypeNames.Integer;\r\n } else if (attrValue.has_uint_value) {\r\n propertyValue.value = attrValue.uint_value;\r\n typename = StandardTypeNames.Integer;\r\n } else {\r\n propertyValue.value = undefined;\r\n }\r\n\r\n return { propertyValue, typename };\r\n }\r\n\r\n public getFeatureAttribute(fieldInfo: PbfFieldInfo, attrValue: esriPBuffer.FeatureCollectionPBuffer.Value): MapLayerFeatureAttribute|undefined {\r\n let propertyValue: PrimitiveValue = { valueFormat: PropertyValueFormat.Primitive };\r\n\r\n let typename = StandardTypeNames.String;\r\n if (fieldInfo.type === esriPBuffer.FeatureCollectionPBuffer.FieldType.esriFieldTypeDouble\r\n || fieldInfo.type === esriPBuffer.FeatureCollectionPBuffer.FieldType.esriFieldTypeInteger\r\n || fieldInfo.type === esriPBuffer.FeatureCollectionPBuffer.FieldType.esriFieldTypeSmallInteger\r\n || fieldInfo.type === esriPBuffer.FeatureCollectionPBuffer.FieldType.esriFieldTypeOID\r\n || fieldInfo.type === esriPBuffer.FeatureCollectionPBuffer.FieldType.esriFieldTypeSingle\r\n || fieldInfo.type === esriPBuffer.FeatureCollectionPBuffer.FieldType.esriFieldTypeDate\r\n ) {\r\n const value = this.getNumericValue(attrValue);\r\n if (value.propertyValue === undefined) {\r\n Logger.logError(loggerCategory, `Could not read numeric value for field ${fieldInfo.name}`);\r\n return undefined;\r\n }\r\n\r\n if (fieldInfo.type === esriPBuffer.FeatureCollectionPBuffer.FieldType.esriFieldTypeDate) {\r\n const test = (value.propertyValue.value as unknown) as number;\r\n propertyValue.value = new Date(test);\r\n typename = StandardTypeNames.DateTime;\r\n } else {\r\n typename = value.typename;\r\n propertyValue = value.propertyValue;\r\n }\r\n } else if (fieldInfo.type === esriPBuffer.FeatureCollectionPBuffer.FieldType.esriFieldTypeString) {\r\n if (attrValue.has_string_value) {\r\n propertyValue.value = attrValue.string_value;\r\n typename = StandardTypeNames.String;\r\n }\r\n } else if (fieldInfo.type === esriPBuffer.FeatureCollectionPBuffer.FieldType.esriFieldTypeGlobalID) {\r\n if (attrValue.has_string_value) {\r\n propertyValue.value = attrValue.string_value;\r\n typename = StandardTypeNames.String;\r\n } else {\r\n const value = this.getNumericValue(attrValue);\r\n if (value.propertyValue === undefined) {\r\n Logger.logError(loggerCategory, `Could not read GlobalId value for field ${fieldInfo.name}`);\r\n return undefined;\r\n }\r\n }\r\n } else if (attrValue.has_string_value) {\r\n // If we reach this case that probably mean we don't support the field type, simply try to output string value\r\n typename = StandardTypeNames.String;\r\n propertyValue.value = attrValue.string_value;\r\n } else if (attrValue.value_type === \"none\") {\r\n // Sometimes fields are just empty, use an empty string\r\n typename = StandardTypeNames.String;\r\n propertyValue.value = undefined;\r\n } else {\r\n Logger.logError(loggerCategory, `Could not read value for field ${fieldInfo.name}`);\r\n return undefined;\r\n }\r\n\r\n propertyValue.displayValue = this.getDisplayValue(typename, propertyValue.value);\r\n\r\n return {value: propertyValue, property: { name: fieldInfo.name, displayLabel: fieldInfo.name, typename } };\r\n }\r\n\r\n public async readAndRender(response: ArcGisResponseData, renderer: ArcGisGeometryRenderer) {\r\n if (!(response.data instanceof esriPBuffer.FeatureCollectionPBuffer)) {\r\n const msg = \"Response was not in PBF format\";\r\n Logger.logError(loggerCategory, msg);\r\n return;\r\n }\r\n\r\n const collection = response.data;\r\n if (!collection.has_queryResult || !collection.queryResult.has_featureResult || collection?.queryResult?.featureResult?.features === undefined)\r\n return;\r\n\r\n const attrSymbology = renderer.attributeSymbology;\r\n\r\n // Fields metadata is stored outside feature results, create dedicated array first\r\n const fields: PbfFieldInfo[] = [];\r\n for (const field of collection.queryResult.featureResult.fields)\r\n fields.push({name: field.name, type:field.fieldType});\r\n\r\n const geomType = collection.queryResult.featureResult.geometryType;\r\n const stride = (collection.queryResult.featureResult.hasM || collection.queryResult.featureResult.hasZ) ? 3 : 2;\r\n const relativeCoords = renderer.transform === undefined;\r\n for (const feature of collection.queryResult.featureResult.features) {\r\n\r\n // Render geometries\r\n if (renderer && feature?.has_geometry) {\r\n\r\n if (attrSymbology) {\r\n // Read attributes if needed (attribute driven symbology)\r\n this.applySymbologyAttributes(attrSymbology, feature, fields);\r\n }\r\n\r\n if (geomType === esriGeometryType.esriGeometryTypePoint || geomType === esriGeometryType.esriGeometryTypeMultipoint) {\r\n await renderer.renderPoint(feature.geometry.lengths, feature.geometry.coords, stride, relativeCoords);\r\n } else if (geomType === esriGeometryType.esriGeometryTypePolyline || geomType === esriGeometryType.esriGeometryTypePolygon) {\r\n const fill = (geomType === esriGeometryType.esriGeometryTypePolygon);\r\n await renderer.renderPath(feature.geometry.lengths, feature.geometry.coords, fill, stride, relativeCoords);\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n private applySymbologyAttributes(attrSymbology: ArcGisAttributeDrivenSymbology, feature: esriPBuffer.FeatureCollectionPBuffer.Feature, fields: PbfFieldInfo[]) {\r\n if (attrSymbology) {\r\n const symbolFields = attrSymbology.rendererFields;\r\n if (symbolFields && symbolFields.length > 0 && feature.attributes) {\r\n let fieldIdx = 0;\r\n const featureAttr: {[key: string]: any} = {};\r\n for (const attrValue of feature.attributes) {\r\n if (fieldIdx > fields.length) {\r\n Logger.logError(loggerCategory, \"Error while read feature info data: fields metadata missing\");\r\n break;\r\n }\r\n const fieldInfo = fields[fieldIdx++];\r\n if (symbolFields.includes(fieldInfo.name)) {\r\n const attr = this.getFeatureAttribute(fieldInfo, attrValue);\r\n if (attr) {\r\n const primitiveValue = attr.value as PrimitiveValue;\r\n featureAttr[fieldInfo.name] = primitiveValue.value;\r\n }\r\n }\r\n\r\n }\r\n attrSymbology.setActiveFeatureAttributes(featureAttr);\r\n }\r\n }\r\n }\r\n\r\n public async readFeatureInfo(response: ArcGisResponseData, featureInfos: MapLayerFeatureInfo[], renderer?: ArcGisGraphicsRenderer) {\r\n if (!(response.data instanceof esriPBuffer.FeatureCollectionPBuffer)) {\r\n\r\n Logger.logError(loggerCategory, \"Response was not in PBF format\");\r\n }\r\n\r\n const collection = response.data as esriPBuffer.FeatureCollectionPBuffer;\r\n if (!collection.has_queryResult || !collection.queryResult.has_featureResult || collection?.queryResult?.featureResult?.features === undefined)\r\n return;\r\n\r\n const layerInfo: MapLayerFeatureInfo = { layerName: this._settings.name, subLayerInfos: [] };\r\n\r\n // Fields metadata is stored outside feature results, create dedicated array first\r\n const fields: PbfFieldInfo[] = [];\r\n for (const field of collection.queryResult.featureResult.fields)\r\n fields.push({name: field.name, type:field.fieldType});\r\n\r\n const geomType = collection.queryResult.featureResult.geometryType;\r\n const stride = (collection.queryResult.featureResult.hasM || collection.queryResult.featureResult.hasZ) ? 3 : 2;\r\n\r\n const subLayerInfo: MapSubLayerFeatureInfo = {\r\n subLayerName: this._layerMetadata.name,\r\n displayFieldName: this._layerMetadata.name,\r\n features: [],\r\n };\r\n\r\n // Read feature values\r\n for (const featureResponse of collection.queryResult.featureResult.features) {\r\n const feature: MapLayerFeature = { attributes: []};\r\n\r\n if (renderer && featureResponse?.has_geometry) {\r\n if (geomType === esriGeometryType.esriGeometryTypePoint || geomType === esriGeometryType.esriGeometryTypeMultipoint) {\r\n await renderer.renderPoint(featureResponse.geometry.lengths, featureResponse.geometry.coords, stride, true);\r\n } else if (geomType === esriGeometryType.esriGeometryTypePolyline || geomType === esriGeometryType.esriGeometryTypePolygon) {\r\n const fill = (geomType === esriGeometryType.esriGeometryTypePolygon);\r\n await renderer.renderPath(featureResponse.geometry.lengths, featureResponse.geometry.coords, fill, stride, true);\r\n }\r\n const graphics = renderer.moveGraphics();\r\n feature.geometries = graphics.map((graphic) => {\r\n return {graphic};\r\n });\r\n }\r\n\r\n let fieldIdx = 0;\r\n for (const attrValue of featureResponse.attributes) {\r\n if (fieldIdx > fields.length) {\r\n Logger.logError(loggerCategory, \"Error while read feature info data: fields metadata missing\");\r\n break;\r\n }\r\n // Convert everything to string for now\r\n const attr = this.getFeatureAttribute(fields[fieldIdx], attrValue);\r\n if (attr) {\r\n feature.attributes?.push(attr);\r\n }\r\n\r\n fieldIdx++;\r\n }\r\n subLayerInfo.features.push(feature);\r\n }\r\n\r\n if (layerInfo.subLayerInfos === undefined) {\r\n layerInfo.subLayerInfos = [];\r\n }\r\n layerInfo.subLayerInfos.push(subLayerInfo);\r\n featureInfos.push(layerInfo);\r\n }\r\n}\r\n"]}
@@ -1,86 +1,41 @@
1
- import { ColorDef } from "@itwin/core-common";
2
- import { ArcGisFeatureGeometryType } from "./ArcGisFeatureQuery";
1
+ import { EsriRenderer, EsriSymbol, EsriUniqueValueRenderer } from "./EsriSymbology";
2
+ import { ArcGisAttributeDrivenSymbology } from "@itwin/core-frontend";
3
3
  /** @internal */
4
- export type EsriSymbolType = "esriSFS" | "esriPMS" | "esriSLS" | "esriSMS" | "esriTS" | "CIMSymbolReference";
5
- interface EsriSymbol {
6
- type: EsriSymbolType;
7
- }
8
- /** @internal */
9
- export type EsriSLSStyle = "esriSLSDash" | "esriSLSDashDot" | "esriSLSDashDotDot" | "esriSLSDot" | "esriSLSLongDash" | "esriSLSLongDashDot" | "esriSLSNull" | "esriSLSShortDash" | "esriSLSShortDashDot" | "esriSLSShortDashDotDot" | "esriSLSShortDot" | "esriSLSSolid";
10
- interface EsriSLSProps {
11
- color: number[];
12
- type: EsriSymbolType;
13
- width: number;
14
- style: EsriSLSStyle;
15
- }
16
- /** @internal */
17
- export declare class EsriSLS implements EsriSymbol {
18
- readonly props: EsriSLSProps;
19
- get color(): ColorDef | undefined;
20
- get type(): EsriSymbolType;
21
- get width(): number;
22
- get style(): EsriSLSStyle;
23
- constructor(json: EsriSLSProps);
24
- static fromJSON(json: EsriSLSProps): EsriSLS;
25
- }
26
- interface EsriPMSProps {
27
- type: EsriSymbolType;
28
- url: string;
29
- imageData: string;
30
- contentType: string;
31
- width?: number;
32
- height?: number;
33
- xoffset?: number;
34
- yoffset?: number;
35
- angle?: number;
36
- }
4
+ export type ArcGisSymbologyRendererType = "simple" | "attributeDriven";
37
5
  /** @internal */
38
- export declare class EsriPMS implements EsriSymbol {
39
- readonly props: EsriPMSProps;
40
- private _image;
41
- get type(): EsriSymbolType;
42
- get url(): string;
43
- get imageData(): string;
44
- get imageUrl(): string;
45
- get image(): HTMLImageElement;
46
- get contentType(): string;
47
- get width(): number | undefined;
48
- get height(): number | undefined;
49
- get xoffset(): number | undefined;
50
- get yoffset(): number | undefined;
51
- get angle(): number | undefined;
52
- constructor(json: EsriPMSProps);
53
- static fromJSON(json: EsriPMSProps): EsriPMS;
6
+ export declare abstract class ArcGisSymbologyRenderer {
7
+ abstract isAttributeDriven(): this is ArcGisAttributeDrivenSymbology;
8
+ abstract applyFillStyle(context: CanvasRenderingContext2D): void;
9
+ abstract applyStrokeStyle(context: CanvasRenderingContext2D): void;
10
+ abstract drawPoint(context: CanvasRenderingContext2D, ptX: number, ptY: number): void;
11
+ static create(renderer: EsriRenderer | undefined, defaultSymbol: EsriSymbol): ArcGisSimpleSymbologyRenderer;
54
12
  }
55
13
  /** @internal */
56
- export type EsriSFSStyleProps = "esriSFSBackwardDiagonal" | "esriSFSCross" | "esriSFSDiagonalCross" | "esriSFSForwardDiagonal" | "esriSFSHorizontal" | "esriSFSNull" | "esriSFSSolid" | "esriSFSVertical";
57
- interface EsriSFSProps {
58
- color?: number[];
59
- type: EsriSymbolType;
60
- style: EsriSFSStyleProps;
61
- outline?: EsriSLSProps;
62
- }
63
- /** @internal */
64
- export declare class EsriSFS implements EsriSymbol {
65
- readonly props: EsriSFSProps;
66
- private _outline;
67
- get color(): ColorDef | undefined;
68
- get type(): EsriSymbolType;
69
- get style(): EsriSFSStyleProps;
70
- get outline(): EsriSLS | undefined;
71
- constructor(json: EsriSFSProps);
72
- static fromJSON(json: EsriSFSProps): EsriSFS;
73
- }
74
- /** @internal */
75
- export declare class ArcGisSymbologyRenderer {
76
- private _symbol;
77
- private static readonly defaultPMS;
78
- private static readonly defaultSLS;
79
- private static readonly defaultSFS;
80
- constructor(geometryType: ArcGisFeatureGeometryType, rendererDefinition: any);
14
+ export declare class ArcGisSimpleSymbologyRenderer extends ArcGisSymbologyRenderer {
15
+ isAttributeDriven(): this is ArcGisAttributeDrivenSymbology;
16
+ lineWidthScaleFactor: number;
17
+ get symbol(): EsriSymbol;
18
+ get defaultSymbol(): EsriSymbol;
19
+ protected _symbol: EsriSymbol;
20
+ protected _defaultSymbol: EsriSymbol;
21
+ readonly renderer?: EsriRenderer;
22
+ constructor(renderer: EsriRenderer | undefined, defaultSymbol: EsriSymbol);
81
23
  applyFillStyle(context: CanvasRenderingContext2D): void;
24
+ private getFillColor;
82
25
  applyStrokeStyle(context: CanvasRenderingContext2D): void;
83
26
  drawPoint(context: CanvasRenderingContext2D, ptX: number, ptY: number): void;
84
27
  }
85
- export {};
28
+ /** @internal */
29
+ export declare class ArcGisUniqueValueSymbologyRenderer extends ArcGisSimpleSymbologyRenderer implements ArcGisAttributeDrivenSymbology {
30
+ isAttributeDriven(): this is ArcGisAttributeDrivenSymbology;
31
+ protected _activeFeatureAttributes: {
32
+ [key: string]: any;
33
+ } | undefined;
34
+ protected uvRenderer: EsriUniqueValueRenderer;
35
+ get rendererFields(): string[] | undefined;
36
+ constructor(renderer: EsriUniqueValueRenderer, defaultSymbol: EsriSymbol);
37
+ setActiveFeatureAttributes(attributes: {
38
+ [key: string]: any;
39
+ }): void;
40
+ }
86
41
  //# sourceMappingURL=ArcGisSymbologyRenderer.d.ts.map
@@ -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":"AAOA,OAAO,EAAW,YAAY,EAAwC,UAAU,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AACnI,OAAO,EAAE,8BAA8B,EAAE,MAAM,sBAAsB,CAAC;AAKtE,gBAAgB;AAChB,MAAM,MAAM,2BAA2B,GAAG,QAAQ,GAAG,iBAAiB,CAAC;AAEvE,gBAAgB;AAChB,8BAAsB,uBAAuB;aAC3B,iBAAiB,IAAI,IAAI,IAAI,8BAA8B;aAC3D,cAAc,CAAC,OAAO,EAAE,wBAAwB,GAAG,IAAI;aACvD,gBAAgB,CAAC,OAAO,EAAE,wBAAwB,GAAG,IAAI;aACzD,SAAS,CAAC,OAAO,EAAE,wBAAwB,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;WAE9E,MAAM,CAAC,QAAQ,EAAE,YAAY,GAAC,SAAS,EAAE,aAAa,EAAE,UAAU;CAOjF;AAED,gBAAgB;AAChB,qBAAa,6BAA+B,SAAQ,uBAAuB;IACzD,iBAAiB,IAAI,IAAI,IAAI,8BAA8B;IACpE,oBAAoB,SAAK;IAEhC,IAAW,MAAM,eAAyB;IAC1C,IAAW,aAAa,eAAgC;IACxD,SAAS,CAAC,OAAO,EAAE,UAAU,CAAC;IAC9B,SAAS,CAAC,cAAc,EAAE,UAAU,CAAC;IAErC,SAAgB,QAAQ,CAAC,EAAE,YAAY,CAAC;gBAEpB,QAAQ,EAAE,YAAY,GAAC,SAAS,EAAE,aAAa,EAAE,UAAU;IAaxE,cAAc,CAAC,OAAO,EAAE,wBAAwB;IAYvD,OAAO,CAAC,YAAY;IAYb,gBAAgB,CAAC,OAAO,EAAE,wBAAwB;IAyBlD,SAAS,CAAC,OAAO,EAAE,wBAAwB,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM;CA0B7E;AAED,gBAAgB;AAChB,qBAAa,kCAAmC,SAAQ,6BAA8B,YAAW,8BAA8B;IAC7G,iBAAiB,IAAI,IAAI,IAAI,8BAA8B;IAC3E,SAAS,CAAC,wBAAwB,EAAG;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAC,GAAG,SAAS,CAAC;IACtE,SAAS,CAAC,UAAU,EAAE,uBAAuB,CAAC;IAE9C,IAAW,cAAc,yBAKxB;gBAEmB,QAAQ,EAAE,uBAAuB,EAAE,aAAa,EAAE,UAAU;IAUzE,0BAA0B,CAAC,UAAU,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE;CA0BrE"}