@itwin/map-layers-formats 4.1.0-dev.54 → 4.1.0-dev.56

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 (272) hide show
  1. package/lib/cjs/ArcGisFeature/ArcGisCanvasRenderer.d.ts +17 -0
  2. package/lib/cjs/ArcGisFeature/ArcGisCanvasRenderer.d.ts.map +1 -0
  3. package/lib/cjs/ArcGisFeature/ArcGisCanvasRenderer.js +42 -0
  4. package/lib/cjs/ArcGisFeature/ArcGisCanvasRenderer.js.map +1 -0
  5. package/lib/cjs/ArcGisFeature/ArcGisFeatureFormat.js.map +1 -1
  6. package/lib/cjs/ArcGisFeature/ArcGisFeatureProvider.d.ts +4 -5
  7. package/lib/cjs/ArcGisFeature/ArcGisFeatureProvider.d.ts.map +1 -1
  8. package/lib/cjs/ArcGisFeature/ArcGisFeatureProvider.js +39 -24
  9. package/lib/cjs/ArcGisFeature/ArcGisFeatureProvider.js.map +1 -1
  10. package/lib/cjs/ArcGisFeature/ArcGisFeatureQuery.d.ts +5 -0
  11. package/lib/cjs/ArcGisFeature/ArcGisFeatureQuery.d.ts.map +1 -1
  12. package/lib/cjs/ArcGisFeature/ArcGisFeatureQuery.js +4 -0
  13. package/lib/cjs/ArcGisFeature/ArcGisFeatureQuery.js.map +1 -1
  14. package/lib/cjs/ArcGisFeature/ArcGisFeatureReader.d.ts +15 -6
  15. package/lib/cjs/ArcGisFeature/ArcGisFeatureReader.d.ts.map +1 -1
  16. package/lib/cjs/ArcGisFeature/ArcGisFeatureReader.js +6 -4
  17. package/lib/cjs/ArcGisFeature/ArcGisFeatureReader.js.map +1 -1
  18. package/lib/cjs/ArcGisFeature/ArcGisFeatureResponse.js.map +1 -1
  19. package/lib/cjs/ArcGisFeature/ArcGisJsonFeatureReader.d.ts +13 -0
  20. package/lib/cjs/ArcGisFeature/ArcGisJsonFeatureReader.d.ts.map +1 -0
  21. package/lib/cjs/ArcGisFeature/{ArcGisFeatureJSON.js → ArcGisJsonFeatureReader.js} +36 -58
  22. package/lib/cjs/ArcGisFeature/ArcGisJsonFeatureReader.js.map +1 -0
  23. package/lib/cjs/ArcGisFeature/{ArcGisFeaturePBF.d.ts → ArcGisPbfFeatureReader.d.ts} +6 -7
  24. package/lib/cjs/ArcGisFeature/ArcGisPbfFeatureReader.d.ts.map +1 -0
  25. package/lib/cjs/ArcGisFeature/{ArcGisFeaturePBF.js → ArcGisPbfFeatureReader.js} +46 -32
  26. package/lib/cjs/ArcGisFeature/ArcGisPbfFeatureReader.js.map +1 -0
  27. package/lib/cjs/ArcGisFeature/ArcGisSymbologyRenderer.js +1 -1
  28. package/lib/cjs/ArcGisFeature/ArcGisSymbologyRenderer.js.map +1 -1
  29. package/lib/cjs/ArcGisFeature/esriPBuffer.gen.js.map +1 -1
  30. package/lib/cjs/Tools/MapFeatureInfoDecorator.d.ts +34 -0
  31. package/lib/cjs/Tools/MapFeatureInfoDecorator.d.ts.map +1 -0
  32. package/lib/cjs/Tools/MapFeatureInfoDecorator.js +281 -0
  33. package/lib/cjs/Tools/MapFeatureInfoDecorator.js.map +1 -0
  34. package/lib/cjs/Tools/MapFeatureInfoTool.d.ts +38 -0
  35. package/lib/cjs/Tools/MapFeatureInfoTool.d.ts.map +1 -0
  36. package/lib/cjs/Tools/MapFeatureInfoTool.js +113 -0
  37. package/lib/cjs/Tools/MapFeatureInfoTool.js.map +1 -0
  38. package/lib/cjs/map-layers-formats.d.ts +1 -0
  39. package/lib/cjs/map-layers-formats.d.ts.map +1 -1
  40. package/lib/cjs/map-layers-formats.js +1 -0
  41. package/lib/cjs/map-layers-formats.js.map +1 -1
  42. package/lib/cjs/mapLayersFormats.d.ts +12 -1
  43. package/lib/cjs/mapLayersFormats.d.ts.map +1 -1
  44. package/lib/cjs/mapLayersFormats.js +11 -1
  45. package/lib/cjs/mapLayersFormats.js.map +1 -1
  46. package/lib/esm/ArcGisFeature/ArcGisCanvasRenderer.d.ts +17 -0
  47. package/lib/esm/ArcGisFeature/ArcGisCanvasRenderer.d.ts.map +1 -0
  48. package/lib/esm/ArcGisFeature/ArcGisCanvasRenderer.js +38 -0
  49. package/lib/esm/ArcGisFeature/ArcGisCanvasRenderer.js.map +1 -0
  50. package/lib/esm/ArcGisFeature/ArcGisFeatureFormat.js.map +1 -1
  51. package/lib/esm/ArcGisFeature/ArcGisFeatureProvider.d.ts +4 -5
  52. package/lib/esm/ArcGisFeature/ArcGisFeatureProvider.d.ts.map +1 -1
  53. package/lib/esm/ArcGisFeature/ArcGisFeatureProvider.js +40 -25
  54. package/lib/esm/ArcGisFeature/ArcGisFeatureProvider.js.map +1 -1
  55. package/lib/esm/ArcGisFeature/ArcGisFeatureQuery.d.ts +5 -0
  56. package/lib/esm/ArcGisFeature/ArcGisFeatureQuery.d.ts.map +1 -1
  57. package/lib/esm/ArcGisFeature/ArcGisFeatureQuery.js +4 -0
  58. package/lib/esm/ArcGisFeature/ArcGisFeatureQuery.js.map +1 -1
  59. package/lib/esm/ArcGisFeature/ArcGisFeatureReader.d.ts +15 -6
  60. package/lib/esm/ArcGisFeature/ArcGisFeatureReader.d.ts.map +1 -1
  61. package/lib/esm/ArcGisFeature/ArcGisFeatureReader.js +4 -2
  62. package/lib/esm/ArcGisFeature/ArcGisFeatureReader.js.map +1 -1
  63. package/lib/esm/ArcGisFeature/ArcGisFeatureResponse.js.map +1 -1
  64. package/lib/esm/ArcGisFeature/ArcGisJsonFeatureReader.d.ts +13 -0
  65. package/lib/esm/ArcGisFeature/ArcGisJsonFeatureReader.d.ts.map +1 -0
  66. package/lib/esm/ArcGisFeature/ArcGisJsonFeatureReader.js +107 -0
  67. package/lib/esm/ArcGisFeature/ArcGisJsonFeatureReader.js.map +1 -0
  68. package/lib/esm/ArcGisFeature/{ArcGisFeaturePBF.d.ts → ArcGisPbfFeatureReader.d.ts} +6 -7
  69. package/lib/esm/ArcGisFeature/ArcGisPbfFeatureReader.d.ts.map +1 -0
  70. package/lib/esm/ArcGisFeature/{ArcGisFeaturePBF.js → ArcGisPbfFeatureReader.js} +44 -30
  71. package/lib/esm/ArcGisFeature/ArcGisPbfFeatureReader.js.map +1 -0
  72. package/lib/esm/ArcGisFeature/ArcGisSymbologyRenderer.js +1 -1
  73. package/lib/esm/ArcGisFeature/ArcGisSymbologyRenderer.js.map +1 -1
  74. package/lib/esm/ArcGisFeature/esriPBuffer.gen.js.map +1 -1
  75. package/lib/esm/Tools/MapFeatureInfoDecorator.d.ts +34 -0
  76. package/lib/esm/Tools/MapFeatureInfoDecorator.d.ts.map +1 -0
  77. package/lib/esm/Tools/MapFeatureInfoDecorator.js +277 -0
  78. package/lib/esm/Tools/MapFeatureInfoDecorator.js.map +1 -0
  79. package/lib/esm/Tools/MapFeatureInfoTool.d.ts +38 -0
  80. package/lib/esm/Tools/MapFeatureInfoTool.d.ts.map +1 -0
  81. package/lib/esm/Tools/MapFeatureInfoTool.js +110 -0
  82. package/lib/esm/Tools/MapFeatureInfoTool.js.map +1 -0
  83. package/lib/esm/map-layers-formats.d.ts +1 -0
  84. package/lib/esm/map-layers-formats.d.ts.map +1 -1
  85. package/lib/esm/map-layers-formats.js +1 -0
  86. package/lib/esm/map-layers-formats.js.map +1 -1
  87. package/lib/esm/mapLayersFormats.d.ts +12 -1
  88. package/lib/esm/mapLayersFormats.d.ts.map +1 -1
  89. package/lib/esm/mapLayersFormats.js +13 -2
  90. package/lib/esm/mapLayersFormats.js.map +1 -1
  91. package/lib/public/locales/en/mapLayersFormats.json +12 -0
  92. package/package.json +15 -12
  93. package/.nycrc +0 -10
  94. package/.rush/temp/operation/build/all.log +0 -1
  95. package/.rush/temp/operation/build/state.json +0 -3
  96. package/.rush/temp/operation/cover/all.log +0 -103
  97. package/.rush/temp/operation/cover/state.json +0 -3
  98. package/.rush/temp/operation/docs/all.log +0 -30
  99. package/.rush/temp/operation/docs/state.json +0 -3
  100. package/.rush/temp/package-deps_build.json +0 -36
  101. package/.rush/temp/package-deps_cover.json +0 -36
  102. package/.rush/temp/package-deps_docs.json +0 -36
  103. package/.rush/temp/shrinkwrap-deps.json +0 -495
  104. package/CHANGELOG.json +0 -176
  105. package/config/rush-project.json +0 -6
  106. package/lib/cjs/ArcGisFeature/ArcGisFeatureJSON.d.ts +0 -15
  107. package/lib/cjs/ArcGisFeature/ArcGisFeatureJSON.d.ts.map +0 -1
  108. package/lib/cjs/ArcGisFeature/ArcGisFeatureJSON.js.map +0 -1
  109. package/lib/cjs/ArcGisFeature/ArcGisFeaturePBF.d.ts.map +0 -1
  110. package/lib/cjs/ArcGisFeature/ArcGisFeaturePBF.js.map +0 -1
  111. package/lib/cjs/ArcGisFeature/ArcGisFeatureRenderer.d.ts +0 -33
  112. package/lib/cjs/ArcGisFeature/ArcGisFeatureRenderer.d.ts.map +0 -1
  113. package/lib/cjs/ArcGisFeature/ArcGisFeatureRenderer.js +0 -143
  114. package/lib/cjs/ArcGisFeature/ArcGisFeatureRenderer.js.map +0 -1
  115. package/lib/cjs/test/ArcGisFeature/ArcGisFeatureFeatureFormats.test.d.ts +0 -2
  116. package/lib/cjs/test/ArcGisFeature/ArcGisFeatureFeatureFormats.test.d.ts.map +0 -1
  117. package/lib/cjs/test/ArcGisFeature/ArcGisFeatureFeatureFormats.test.js +0 -35
  118. package/lib/cjs/test/ArcGisFeature/ArcGisFeatureFeatureFormats.test.js.map +0 -1
  119. package/lib/cjs/test/ArcGisFeature/ArcGisFeatureJSON.test.d.ts +0 -2
  120. package/lib/cjs/test/ArcGisFeature/ArcGisFeatureJSON.test.d.ts.map +0 -1
  121. package/lib/cjs/test/ArcGisFeature/ArcGisFeatureJSON.test.js +0 -162
  122. package/lib/cjs/test/ArcGisFeature/ArcGisFeatureJSON.test.js.map +0 -1
  123. package/lib/cjs/test/ArcGisFeature/ArcGisFeaturePBF.test.d.ts +0 -2
  124. package/lib/cjs/test/ArcGisFeature/ArcGisFeaturePBF.test.d.ts.map +0 -1
  125. package/lib/cjs/test/ArcGisFeature/ArcGisFeaturePBF.test.js +0 -168
  126. package/lib/cjs/test/ArcGisFeature/ArcGisFeaturePBF.test.js.map +0 -1
  127. package/lib/cjs/test/ArcGisFeature/ArcGisFeatureProvider.test.d.ts +0 -2
  128. package/lib/cjs/test/ArcGisFeature/ArcGisFeatureProvider.test.d.ts.map +0 -1
  129. package/lib/cjs/test/ArcGisFeature/ArcGisFeatureProvider.test.js +0 -812
  130. package/lib/cjs/test/ArcGisFeature/ArcGisFeatureProvider.test.js.map +0 -1
  131. package/lib/cjs/test/ArcGisFeature/ArcGisFeatureQuery.test.d.ts +0 -2
  132. package/lib/cjs/test/ArcGisFeature/ArcGisFeatureQuery.test.d.ts.map +0 -1
  133. package/lib/cjs/test/ArcGisFeature/ArcGisFeatureQuery.test.js +0 -104
  134. package/lib/cjs/test/ArcGisFeature/ArcGisFeatureQuery.test.js.map +0 -1
  135. package/lib/cjs/test/ArcGisFeature/ArcGisFeatureRenderer.test.d.ts +0 -2
  136. package/lib/cjs/test/ArcGisFeature/ArcGisFeatureRenderer.test.d.ts.map +0 -1
  137. package/lib/cjs/test/ArcGisFeature/ArcGisFeatureRenderer.test.js +0 -215
  138. package/lib/cjs/test/ArcGisFeature/ArcGisFeatureRenderer.test.js.map +0 -1
  139. package/lib/cjs/test/ArcGisFeature/ArcGisFeatureResponse.test.d.ts +0 -2
  140. package/lib/cjs/test/ArcGisFeature/ArcGisFeatureResponse.test.d.ts.map +0 -1
  141. package/lib/cjs/test/ArcGisFeature/ArcGisFeatureResponse.test.js +0 -95
  142. package/lib/cjs/test/ArcGisFeature/ArcGisFeatureResponse.test.js.map +0 -1
  143. package/lib/cjs/test/ArcGisFeature/ArcGisSymbologyRenderer.test.d.ts +0 -2
  144. package/lib/cjs/test/ArcGisFeature/ArcGisSymbologyRenderer.test.d.ts.map +0 -1
  145. package/lib/cjs/test/ArcGisFeature/ArcGisSymbologyRenderer.test.js +0 -60
  146. package/lib/cjs/test/ArcGisFeature/ArcGisSymbologyRenderer.test.js.map +0 -1
  147. package/lib/cjs/test/ArcGisFeature/Mocks.d.ts +0 -7
  148. package/lib/cjs/test/ArcGisFeature/Mocks.d.ts.map +0 -1
  149. package/lib/cjs/test/ArcGisFeature/Mocks.js +0 -19
  150. package/lib/cjs/test/ArcGisFeature/Mocks.js.map +0 -1
  151. package/lib/cjs/test/ArcGisFeature/NewYorkDataset.d.ts +0 -56
  152. package/lib/cjs/test/ArcGisFeature/NewYorkDataset.d.ts.map +0 -1
  153. package/lib/cjs/test/ArcGisFeature/NewYorkDataset.js +0 -420
  154. package/lib/cjs/test/ArcGisFeature/NewYorkDataset.js.map +0 -1
  155. package/lib/cjs/test/ArcGisFeature/PhillyLandmarksDataset.d.ts +0 -1043
  156. package/lib/cjs/test/ArcGisFeature/PhillyLandmarksDataset.d.ts.map +0 -1
  157. package/lib/cjs/test/ArcGisFeature/PhillyLandmarksDataset.js +0 -427
  158. package/lib/cjs/test/ArcGisFeature/PhillyLandmarksDataset.js.map +0 -1
  159. package/lib/cjs/test/coverage/.nyc_output/329513f2-7069-4b0e-a487-c3b48366153a.json +0 -1
  160. package/lib/cjs/test/coverage/.nyc_output/a1ec61a9-c1af-46dd-9c85-a6f85693894b.json +0 -1
  161. package/lib/cjs/test/coverage/.nyc_output/processinfo/329513f2-7069-4b0e-a487-c3b48366153a.json +0 -1
  162. package/lib/cjs/test/coverage/.nyc_output/processinfo/a1ec61a9-c1af-46dd-9c85-a6f85693894b.json +0 -1
  163. package/lib/cjs/test/coverage/.nyc_output/processinfo/index.json +0 -1
  164. package/lib/cjs/test/coverage/cobertura-coverage.xml +0 -1206
  165. package/lib/cjs/test/coverage/lcov-report/base.css +0 -224
  166. package/lib/cjs/test/coverage/lcov-report/block-navigation.js +0 -87
  167. package/lib/cjs/test/coverage/lcov-report/favicon.png +0 -0
  168. package/lib/cjs/test/coverage/lcov-report/index.html +0 -131
  169. package/lib/cjs/test/coverage/lcov-report/prettify.css +0 -1
  170. package/lib/cjs/test/coverage/lcov-report/prettify.js +0 -2
  171. package/lib/cjs/test/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  172. package/lib/cjs/test/coverage/lcov-report/sorter.js +0 -196
  173. package/lib/cjs/test/coverage/lcov-report/src/ArcGisFeature/ArcGisFeatureFormat.ts.html +0 -145
  174. package/lib/cjs/test/coverage/lcov-report/src/ArcGisFeature/ArcGisFeatureJSON.ts.html +0 -550
  175. package/lib/cjs/test/coverage/lcov-report/src/ArcGisFeature/ArcGisFeaturePBF.ts.html +0 -730
  176. package/lib/cjs/test/coverage/lcov-report/src/ArcGisFeature/ArcGisFeatureProvider.ts.html +0 -1672
  177. package/lib/cjs/test/coverage/lcov-report/src/ArcGisFeature/ArcGisFeatureQuery.ts.html +0 -763
  178. package/lib/cjs/test/coverage/lcov-report/src/ArcGisFeature/ArcGisFeatureReader.ts.html +0 -223
  179. package/lib/cjs/test/coverage/lcov-report/src/ArcGisFeature/ArcGisFeatureRenderer.ts.html +0 -598
  180. package/lib/cjs/test/coverage/lcov-report/src/ArcGisFeature/ArcGisFeatureResponse.ts.html +0 -301
  181. package/lib/cjs/test/coverage/lcov-report/src/ArcGisFeature/ArcGisSymbologyRenderer.ts.html +0 -832
  182. package/lib/cjs/test/coverage/lcov-report/src/ArcGisFeature/index.html +0 -236
  183. package/lib/cjs/test/coverage/lcov-report/src/index.html +0 -131
  184. package/lib/cjs/test/coverage/lcov-report/src/map-layers-formats.ts.html +0 -130
  185. package/lib/cjs/test/coverage/lcov-report/src/mapLayersFormats.ts.html +0 -163
  186. package/lib/cjs/test/coverage/lcov.info +0 -1399
  187. package/lib/cjs/tsconfig.tsbuildinfo +0 -1
  188. package/lib/esm/ArcGisFeature/ArcGisFeatureJSON.d.ts +0 -15
  189. package/lib/esm/ArcGisFeature/ArcGisFeatureJSON.d.ts.map +0 -1
  190. package/lib/esm/ArcGisFeature/ArcGisFeatureJSON.js +0 -129
  191. package/lib/esm/ArcGisFeature/ArcGisFeatureJSON.js.map +0 -1
  192. package/lib/esm/ArcGisFeature/ArcGisFeaturePBF.d.ts.map +0 -1
  193. package/lib/esm/ArcGisFeature/ArcGisFeaturePBF.js.map +0 -1
  194. package/lib/esm/ArcGisFeature/ArcGisFeatureRenderer.d.ts +0 -33
  195. package/lib/esm/ArcGisFeature/ArcGisFeatureRenderer.d.ts.map +0 -1
  196. package/lib/esm/ArcGisFeature/ArcGisFeatureRenderer.js +0 -139
  197. package/lib/esm/ArcGisFeature/ArcGisFeatureRenderer.js.map +0 -1
  198. package/lib/esm/test/ArcGisFeature/ArcGisFeatureFeatureFormats.test.d.ts +0 -2
  199. package/lib/esm/test/ArcGisFeature/ArcGisFeatureFeatureFormats.test.d.ts.map +0 -1
  200. package/lib/esm/test/ArcGisFeature/ArcGisFeatureFeatureFormats.test.js +0 -33
  201. package/lib/esm/test/ArcGisFeature/ArcGisFeatureFeatureFormats.test.js.map +0 -1
  202. package/lib/esm/test/ArcGisFeature/ArcGisFeatureJSON.test.d.ts +0 -2
  203. package/lib/esm/test/ArcGisFeature/ArcGisFeatureJSON.test.d.ts.map +0 -1
  204. package/lib/esm/test/ArcGisFeature/ArcGisFeatureJSON.test.js +0 -160
  205. package/lib/esm/test/ArcGisFeature/ArcGisFeatureJSON.test.js.map +0 -1
  206. package/lib/esm/test/ArcGisFeature/ArcGisFeaturePBF.test.d.ts +0 -2
  207. package/lib/esm/test/ArcGisFeature/ArcGisFeaturePBF.test.d.ts.map +0 -1
  208. package/lib/esm/test/ArcGisFeature/ArcGisFeaturePBF.test.js +0 -166
  209. package/lib/esm/test/ArcGisFeature/ArcGisFeaturePBF.test.js.map +0 -1
  210. package/lib/esm/test/ArcGisFeature/ArcGisFeatureProvider.test.d.ts +0 -2
  211. package/lib/esm/test/ArcGisFeature/ArcGisFeatureProvider.test.d.ts.map +0 -1
  212. package/lib/esm/test/ArcGisFeature/ArcGisFeatureProvider.test.js +0 -810
  213. package/lib/esm/test/ArcGisFeature/ArcGisFeatureProvider.test.js.map +0 -1
  214. package/lib/esm/test/ArcGisFeature/ArcGisFeatureQuery.test.d.ts +0 -2
  215. package/lib/esm/test/ArcGisFeature/ArcGisFeatureQuery.test.d.ts.map +0 -1
  216. package/lib/esm/test/ArcGisFeature/ArcGisFeatureQuery.test.js +0 -102
  217. package/lib/esm/test/ArcGisFeature/ArcGisFeatureQuery.test.js.map +0 -1
  218. package/lib/esm/test/ArcGisFeature/ArcGisFeatureRenderer.test.d.ts +0 -2
  219. package/lib/esm/test/ArcGisFeature/ArcGisFeatureRenderer.test.d.ts.map +0 -1
  220. package/lib/esm/test/ArcGisFeature/ArcGisFeatureRenderer.test.js +0 -213
  221. package/lib/esm/test/ArcGisFeature/ArcGisFeatureRenderer.test.js.map +0 -1
  222. package/lib/esm/test/ArcGisFeature/ArcGisFeatureResponse.test.d.ts +0 -2
  223. package/lib/esm/test/ArcGisFeature/ArcGisFeatureResponse.test.d.ts.map +0 -1
  224. package/lib/esm/test/ArcGisFeature/ArcGisFeatureResponse.test.js +0 -93
  225. package/lib/esm/test/ArcGisFeature/ArcGisFeatureResponse.test.js.map +0 -1
  226. package/lib/esm/test/ArcGisFeature/ArcGisSymbologyRenderer.test.d.ts +0 -2
  227. package/lib/esm/test/ArcGisFeature/ArcGisSymbologyRenderer.test.d.ts.map +0 -1
  228. package/lib/esm/test/ArcGisFeature/ArcGisSymbologyRenderer.test.js +0 -58
  229. package/lib/esm/test/ArcGisFeature/ArcGisSymbologyRenderer.test.js.map +0 -1
  230. package/lib/esm/test/ArcGisFeature/Mocks.d.ts +0 -7
  231. package/lib/esm/test/ArcGisFeature/Mocks.d.ts.map +0 -1
  232. package/lib/esm/test/ArcGisFeature/Mocks.js +0 -16
  233. package/lib/esm/test/ArcGisFeature/Mocks.js.map +0 -1
  234. package/lib/esm/test/ArcGisFeature/NewYorkDataset.d.ts +0 -56
  235. package/lib/esm/test/ArcGisFeature/NewYorkDataset.d.ts.map +0 -1
  236. package/lib/esm/test/ArcGisFeature/NewYorkDataset.js +0 -417
  237. package/lib/esm/test/ArcGisFeature/NewYorkDataset.js.map +0 -1
  238. package/lib/esm/test/ArcGisFeature/PhillyLandmarksDataset.d.ts +0 -1043
  239. package/lib/esm/test/ArcGisFeature/PhillyLandmarksDataset.d.ts.map +0 -1
  240. package/lib/esm/test/ArcGisFeature/PhillyLandmarksDataset.js +0 -424
  241. package/lib/esm/test/ArcGisFeature/PhillyLandmarksDataset.js.map +0 -1
  242. package/lib/esm/tsconfig.tsbuildinfo +0 -1
  243. package/lib/test/junit_results.xml +0 -169
  244. package/map-layers-formats.build.cache.log +0 -2
  245. package/map-layers-formats.cover.log +0 -103
  246. package/map-layers-formats.docs.log +0 -30
  247. package/map-layers-formats.lint.error.log +0 -1
  248. package/map-layers-formats.lint.log +0 -2
  249. package/src/ArcGisFeature/ArcGisFeatureFormat.ts +0 -20
  250. package/src/ArcGisFeature/ArcGisFeatureJSON.ts +0 -155
  251. package/src/ArcGisFeature/ArcGisFeaturePBF.ts +0 -215
  252. package/src/ArcGisFeature/ArcGisFeatureProvider.ts +0 -529
  253. package/src/ArcGisFeature/ArcGisFeatureQuery.ts +0 -226
  254. package/src/ArcGisFeature/ArcGisFeatureReader.ts +0 -46
  255. package/src/ArcGisFeature/ArcGisFeatureRenderer.ts +0 -171
  256. package/src/ArcGisFeature/ArcGisFeatureResponse.ts +0 -72
  257. package/src/ArcGisFeature/ArcGisSymbologyRenderer.ts +0 -249
  258. package/src/ArcGisFeature/esriPBuffer.gen.ts +0 -2612
  259. package/src/map-layers-formats.ts +0 -15
  260. package/src/mapLayersFormats.ts +0 -26
  261. package/src/test/ArcGisFeature/ArcGisFeatureFeatureFormats.test.ts +0 -46
  262. package/src/test/ArcGisFeature/ArcGisFeatureJSON.test.ts +0 -202
  263. package/src/test/ArcGisFeature/ArcGisFeaturePBF.test.ts +0 -227
  264. package/src/test/ArcGisFeature/ArcGisFeatureProvider.test.ts +0 -977
  265. package/src/test/ArcGisFeature/ArcGisFeatureQuery.test.ts +0 -117
  266. package/src/test/ArcGisFeature/ArcGisFeatureRenderer.test.ts +0 -296
  267. package/src/test/ArcGisFeature/ArcGisFeatureResponse.test.ts +0 -109
  268. package/src/test/ArcGisFeature/ArcGisSymbologyRenderer.test.ts +0 -77
  269. package/src/test/ArcGisFeature/Mocks.ts +0 -19
  270. package/src/test/ArcGisFeature/NewYorkDataset.ts +0 -423
  271. package/src/test/ArcGisFeature/PhillyLandmarksDataset.ts +0 -455
  272. package/tsconfig.json +0 -20
@@ -0,0 +1,17 @@
1
+ import { Transform } from "@itwin/core-geometry";
2
+ import { ArcGisSymbologyRenderer } from "./ArcGisSymbologyRenderer";
3
+ import { ArcGisGeometryBaseRenderer } from "@itwin/core-frontend";
4
+ export declare class ArcGisCanvasRenderer extends ArcGisGeometryBaseRenderer {
5
+ private _context;
6
+ private _symbol;
7
+ constructor(context: CanvasRenderingContext2D, symbol: ArcGisSymbologyRenderer, world2PixelTransform?: Transform);
8
+ protected beginPath(): void;
9
+ protected closePath(): void;
10
+ protected lineTo(x: number, y: number): void;
11
+ protected moveTo(x: number, y: number): void;
12
+ protected fill(): Promise<void>;
13
+ protected stroke(): Promise<void>;
14
+ protected finishPoints(): Promise<void>;
15
+ protected drawPoint(x: number, y: number): Promise<void>;
16
+ }
17
+ //# sourceMappingURL=ArcGisCanvasRenderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ArcGisCanvasRenderer.d.ts","sourceRoot":"","sources":["../../../src/ArcGisFeature/ArcGisCanvasRenderer.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAElE,qBAAa,oBAAqB,SAAQ,0BAA0B;IAClE,OAAO,CAAC,QAAQ,CAA2B;IAC3C,OAAO,CAAC,OAAO,CAA0B;gBAE7B,OAAO,EAAE,wBAAwB,EAAE,MAAM,EAAE,uBAAuB,EAAE,oBAAoB,CAAC,EAAE,SAAS;IAMhH,SAAS,CAAC,SAAS;IAInB,SAAS,CAAC,SAAS;IAInB,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM;IAIrC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM;cAIrB,IAAI;cAKJ,MAAM;cAKN,YAAY;cAGZ,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM;CAI/C"}
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ /*---------------------------------------------------------------------------------------------
3
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
4
+ * See LICENSE.md in the project root for license terms and full copyright notice.
5
+ *--------------------------------------------------------------------------------------------*/
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.ArcGisCanvasRenderer = void 0;
8
+ const core_frontend_1 = require("@itwin/core-frontend");
9
+ class ArcGisCanvasRenderer extends core_frontend_1.ArcGisGeometryBaseRenderer {
10
+ constructor(context, symbol, world2PixelTransform) {
11
+ super(world2PixelTransform);
12
+ this._symbol = symbol;
13
+ this._context = context;
14
+ }
15
+ beginPath() {
16
+ this._context.beginPath();
17
+ }
18
+ closePath() {
19
+ this._context.closePath();
20
+ }
21
+ lineTo(x, y) {
22
+ this._context.lineTo(x, y);
23
+ }
24
+ moveTo(x, y) {
25
+ this._context.moveTo(x, y);
26
+ }
27
+ async fill() {
28
+ this._symbol.applyFillStyle(this._context);
29
+ this._context.fill();
30
+ }
31
+ async stroke() {
32
+ this._symbol.applyStrokeStyle(this._context);
33
+ this._context.stroke();
34
+ }
35
+ async finishPoints() {
36
+ }
37
+ async drawPoint(x, y) {
38
+ this._symbol.drawPoint(this._context, x, y);
39
+ }
40
+ }
41
+ exports.ArcGisCanvasRenderer = ArcGisCanvasRenderer;
42
+ //# sourceMappingURL=ArcGisCanvasRenderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ArcGisCanvasRenderer.js","sourceRoot":"","sources":["../../../src/ArcGisFeature/ArcGisCanvasRenderer.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;;;AAI/F,wDAAkE;AAElE,MAAa,oBAAqB,SAAQ,0CAA0B;IAIlE,YAAY,OAAiC,EAAE,MAA+B,EAAE,oBAAgC;QAC9G,KAAK,CAAC,oBAAoB,CAAC,CAAC;QAC5B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC1B,CAAC;IAES,SAAS;QACjB,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;IAC5B,CAAC;IAES,SAAS;QACjB,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;IAC5B,CAAC;IAES,MAAM,CAAC,CAAS,EAAE,CAAS;QACnC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7B,CAAC;IAES,MAAM,CAAC,CAAS,EAAE,CAAS;QACnC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7B,CAAC;IAES,KAAK,CAAC,IAAI;QAClB,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC3C,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;IACvB,CAAC;IAES,KAAK,CAAC,MAAM;QACpB,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7C,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;IACzB,CAAC;IAES,KAAK,CAAC,YAAY;IAC5B,CAAC;IAES,KAAK,CAAC,SAAS,CAAC,CAAS,EAAE,CAAS;QAC5C,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9C,CAAC;CAEF;AA3CD,oDA2CC","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 { Transform } from \"@itwin/core-geometry\";\nimport { ArcGisSymbologyRenderer } from \"./ArcGisSymbologyRenderer\";\nimport { ArcGisGeometryBaseRenderer } from \"@itwin/core-frontend\";\n\nexport class ArcGisCanvasRenderer extends ArcGisGeometryBaseRenderer {\n private _context: CanvasRenderingContext2D;\n private _symbol: ArcGisSymbologyRenderer;\n\n constructor(context: CanvasRenderingContext2D, symbol: ArcGisSymbologyRenderer, world2PixelTransform?: Transform) {\n super(world2PixelTransform);\n this._symbol = symbol;\n this._context = context;\n }\n\n protected beginPath() {\n this._context.beginPath();\n }\n\n protected closePath() {\n this._context.closePath();\n }\n\n protected lineTo(x: number, y: number) {\n this._context.lineTo(x, y);\n }\n\n protected moveTo(x: number, y: number) {\n this._context.moveTo(x, y);\n }\n\n protected async fill() {\n this._symbol.applyFillStyle(this._context);\n this._context.fill();\n }\n\n protected async stroke() {\n this._symbol.applyStrokeStyle(this._context);\n this._context.stroke();\n }\n\n protected async finishPoints() {\n }\n\n protected async drawPoint(x: number, y: number) {\n this._symbol.drawPoint(this._context, x, y);\n }\n\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"ArcGisFeatureFormat.js","sourceRoot":"","sources":["../../../src/ArcGisFeature/ArcGisFeatureFormat.ts"],"names":[],"mappings":";;;AAKA,wDAAuJ;AACvJ,mEAAgE;AAEhE,gBAAgB;AAChB,MAAa,2BAA4B,SAAQ,qCAAqB;IAE7D,MAAM,CAAU,qBAAqB,CAAC,QAA+B,IAAyC,OAAO,IAAI,6CAAqB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC3J,MAAM,CAAU,KAAK,CAAC,cAAc,CAAC,GAAW,EAAE,QAAiB,EAAE,QAAiB,EAAE,WAAqB;QAClH,MAAM,aAAa,GAAG,+BAAe,CAAC,WAAW,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC;QACxE,IAAI,aAAa,KAAK,oCAAoB,CAAC,KAAK;YAC9C,OAAO,EAAC,MAAM,EAAE,aAAa,EAAC,CAAC;QAEjC,OAAO,+BAAe,CAAC,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;IACxG,CAAC;;AARsB,oCAAQ,GAAG,eAAe,CAAC;AADvC,kEAA2B","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 { ImageMapLayerSettings } from \"@itwin/core-common\";\r\nimport { ArcGisUtilities, ImageryMapLayerFormat, MapLayerImageryProvider, MapLayerSourceStatus, MapLayerSourceValidation } from \"@itwin/core-frontend\";\r\nimport { ArcGisFeatureProvider } from \"./ArcGisFeatureProvider\";\r\n\r\n/** @internal */\r\nexport class ArcGisFeatureMapLayerFormat extends ImageryMapLayerFormat {\r\n public static override formatId = \"ArcGISFeature\";\r\n public static override createImageryProvider(settings: ImageMapLayerSettings): MapLayerImageryProvider | undefined { return new ArcGisFeatureProvider(settings); }\r\n public static override async validateSource(url: string, userName?: string, password?: string, ignoreCache?: boolean): Promise<MapLayerSourceValidation> {\r\n const urlValidation = ArcGisUtilities.validateUrl(url, \"FeatureServer\");\r\n if (urlValidation !== MapLayerSourceStatus.Valid)\r\n return {status: urlValidation};\r\n\r\n return ArcGisUtilities.validateSource(url, this.formatId, [\"query\"], userName, password, ignoreCache);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"ArcGisFeatureFormat.js","sourceRoot":"","sources":["../../../src/ArcGisFeature/ArcGisFeatureFormat.ts"],"names":[],"mappings":";;;AAKA,wDAAuJ;AACvJ,mEAAgE;AAEhE,gBAAgB;AAChB,MAAa,2BAA4B,SAAQ,qCAAqB;IAE7D,MAAM,CAAU,qBAAqB,CAAC,QAA+B,IAAyC,OAAO,IAAI,6CAAqB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC3J,MAAM,CAAU,KAAK,CAAC,cAAc,CAAC,GAAW,EAAE,QAAiB,EAAE,QAAiB,EAAE,WAAqB;QAClH,MAAM,aAAa,GAAG,+BAAe,CAAC,WAAW,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC;QACxE,IAAI,aAAa,KAAK,oCAAoB,CAAC,KAAK;YAC9C,OAAO,EAAC,MAAM,EAAE,aAAa,EAAC,CAAC;QAEjC,OAAO,+BAAe,CAAC,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;IACxG,CAAC;;AARsB,oCAAQ,GAAG,eAAe,CAAC;AADvC,kEAA2B","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 { ImageMapLayerSettings } from \"@itwin/core-common\";\nimport { ArcGisUtilities, ImageryMapLayerFormat, MapLayerImageryProvider, MapLayerSourceStatus, MapLayerSourceValidation } from \"@itwin/core-frontend\";\nimport { ArcGisFeatureProvider } from \"./ArcGisFeatureProvider\";\n\n/** @internal */\nexport class ArcGisFeatureMapLayerFormat extends ImageryMapLayerFormat {\n public static override formatId = \"ArcGISFeature\";\n public static override createImageryProvider(settings: ImageMapLayerSettings): MapLayerImageryProvider | undefined { return new ArcGisFeatureProvider(settings); }\n public static override async validateSource(url: string, userName?: string, password?: string, ignoreCache?: boolean): Promise<MapLayerSourceValidation> {\n const urlValidation = ArcGisUtilities.validateUrl(url, \"FeatureServer\");\n if (urlValidation !== MapLayerSourceStatus.Valid)\n return {status: urlValidation};\n\n return ArcGisUtilities.validateSource(url, this.formatId, [\"query\"], userName, password, ignoreCache);\n }\n}\n"]}
@@ -1,7 +1,7 @@
1
1
  import { Cartographic, ImageMapLayerSettings, ImageSource } from "@itwin/core-common";
2
2
  import { Transform } from "@itwin/core-geometry";
3
- import { ArcGISImageryProvider, ImageryMapTileTree, MapLayerFeatureInfo, QuadId } from "@itwin/core-frontend";
4
- import { ArcGisExtent, ArcGisFeatureFormat, ArcGisGeometry } from "./ArcGisFeatureQuery";
3
+ import { ArcGISImageryProvider, HitDetail, ImageryMapTileTree, MapLayerFeatureInfo, QuadId } from "@itwin/core-frontend";
4
+ import { ArcGisExtent, ArcGisFeatureFormat, ArcGisFeatureResultType, ArcGisGeometry } from "./ArcGisFeatureQuery";
5
5
  /**
6
6
  * @internal
7
7
  */
@@ -16,7 +16,6 @@ export declare class ArcGisFeatureProvider extends ArcGISImageryProvider {
16
16
  private _drawDebugInfo;
17
17
  private _debugFeatureGeom;
18
18
  private _supportsCoordinatesQuantization;
19
- private _querySupported;
20
19
  private _layerId;
21
20
  private _layerMetadata;
22
21
  private _format;
@@ -37,8 +36,8 @@ export declare class ArcGisFeatureProvider extends ArcGISImageryProvider {
37
36
  get tileSize(): number;
38
37
  get format(): ArcGisFeatureFormat | undefined;
39
38
  constructUrl(_row: number, _column: number, _zoomLevel: number): Promise<string>;
40
- constructFeatureUrl(row: number, column: number, zoomLevel: number, format: ArcGisFeatureFormat, geomOverride?: ArcGisGeometry, outFields?: string, tolerance?: number, returnGeometry?: boolean): ArcGisFeatureUrl | undefined;
41
- getFeatureInfo(featureInfos: MapLayerFeatureInfo[], quadId: QuadId, carto: Cartographic, _tree: ImageryMapTileTree): Promise<void>;
39
+ constructFeatureUrl(row: number, column: number, zoomLevel: number, format: ArcGisFeatureFormat, resultType: ArcGisFeatureResultType, geomOverride?: ArcGisGeometry, outFields?: string, tolerance?: number, returnGeometry?: boolean, maxAllowableOffset?: number): ArcGisFeatureUrl | undefined;
40
+ getFeatureInfo(featureInfos: MapLayerFeatureInfo[], quadId: QuadId, carto: Cartographic, _tree: ImageryMapTileTree, hit: HitDetail): Promise<void>;
42
41
  private fetchTile;
43
42
  drawTileDebugInfo(row: number, column: number, zoomLevel: number, context: CanvasRenderingContext2D): void;
44
43
  protected computeTileWorld2CanvasTransform(row: number, column: number, zoomLevel: number): Transform | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"ArcGisFeatureProvider.d.ts","sourceRoot":"","sources":["../../../src/ArcGisFeature/ArcGisFeatureProvider.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,WAAW,EAAkC,MAAM,oBAAoB,CAAC;AAEtH,OAAO,EAA8B,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAC7E,OAAO,EAAmB,qBAAqB,EAA0C,kBAAkB,EAAqB,mBAAmB,EAAiC,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAEzN,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAsB,cAAc,EAAkC,MAAM,sBAAsB,CAAC;AAO7I;;EAEE;AACF,UAAU,gBAAgB;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,YAAY,CAAC;CACzB;AAED;;EAEE;AACF,qBAAa,qBAAsB,SAAQ,qBAAqB;IAE9D,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,iBAAiB,CAAS;IAElC,OAAO,CAAC,gCAAgC,CAAS;IACjD,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,cAAc,CAAM;IAC5B,OAAO,CAAC,OAAO,CAAgC;IACxC,WAAW,EAAE,GAAG,CAAC;IACxB,OAAO,CAAC,kBAAkB,CAAoC;IAC9D,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAK;IACxC,OAAO,CAAC,MAAM,CAAU;IAExB,OAAO,CAAC,gBAAgB,CAAK;IAC7B,OAAO,CAAC,gBAAgB,CAAK;IAC7B,IAAoB,gBAAgB,IAAI,MAAM,CAAkC;IAChF,IAAoB,gBAAgB,IAAI,MAAM,CAAkC;IAEhF,OAAO,CAAC,MAAM,CAAC,YAAY,CAA0B;gBAEzC,QAAQ,EAAE,qBAAqB;IAIrB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;YAuJnC,gBAAgB;IAmB9B,OAAO,CAAC,2BAA2B;cAanB,gBAAgB,CAAC,OAAO,EAAE,MAAM;IAYhD,IAAoB,QAAQ,IAAI,MAAM,CAAgB;IACtD,IAAW,MAAM,IAAI,mBAAmB,GAAC,SAAS,CAAyB;IAG9D,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAItF,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,mBAAmB,EAAE,YAAY,CAAC,EAAE,cAAc,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,OAAO,GAAG,gBAAgB,GAAG,SAAS;IAyD/M,cAAc,CAAC,YAAY,EAAE,mBAAmB,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;YA4D3I,SAAS;IAgBf,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,wBAAwB;IAU3G,SAAS,CAAC,gCAAgC,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAsBnE,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;CA0GjH"}
1
+ {"version":3,"file":"ArcGisFeatureProvider.d.ts","sourceRoot":"","sources":["../../../src/ArcGisFeature/ArcGisFeatureProvider.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,WAAW,EAAkC,MAAM,oBAAoB,CAAC;AAEtH,OAAO,EAA8B,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAC7E,OAAO,EAA2C,qBAAqB,EAA0C,SAAS,EAAE,kBAAkB,EAAqB,mBAAmB,EAAiC,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE5P,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAsB,uBAAuB,EAAE,cAAc,EAAkC,MAAM,sBAAsB,CAAC;AAStK;;EAEE;AACF,UAAU,gBAAgB;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,YAAY,CAAC;CACzB;AAED;;EAEE;AACF,qBAAa,qBAAsB,SAAQ,qBAAqB;IAE9D,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,iBAAiB,CAAS;IAElC,OAAO,CAAC,gCAAgC,CAAS;IAEjD,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,cAAc,CAAM;IAC5B,OAAO,CAAC,OAAO,CAAkC;IAC1C,WAAW,EAAE,GAAG,CAAC;IACxB,OAAO,CAAC,kBAAkB,CAAsC;IAChE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAK;IACxC,OAAO,CAAC,MAAM,CAAU;IAExB,OAAO,CAAC,gBAAgB,CAAK;IAC7B,OAAO,CAAC,gBAAgB,CAAK;IAC7B,IAAoB,gBAAgB,IAAI,MAAM,CAAkC;IAChF,IAAoB,gBAAgB,IAAI,MAAM,CAAkC;IAEhF,OAAO,CAAC,MAAM,CAAC,YAAY,CAA0B;gBAEzC,QAAQ,EAAE,qBAAqB;IAIrB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;YAuJnC,gBAAgB;IAmB9B,OAAO,CAAC,2BAA2B;cAanB,gBAAgB,CAAC,OAAO,EAAE,MAAM;IAYhD,IAAoB,QAAQ,IAAI,MAAM,CAAgB;IACtD,IAAW,MAAM,IAAI,mBAAmB,GAAG,SAAS,CAAyB;IAGhE,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAItF,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,mBAAmB,EAAE,UAAU,EAAE,uBAAuB,EAAE,YAAY,CAAC,EAAE,cAAc,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,OAAO,EAAE,kBAAkB,CAAC,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS;IA4DlR,cAAc,CAAC,YAAY,EAAE,mBAAmB,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,kBAAkB,EAAE,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;YA6E1J,SAAS;IAgBhB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,wBAAwB;IAU1G,SAAS,CAAC,gCAAgC,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAsBnE,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;CA2GjH"}
@@ -11,10 +11,10 @@ const core_geometry_1 = require("@itwin/core-geometry");
11
11
  const core_frontend_1 = require("@itwin/core-frontend");
12
12
  const ArcGisSymbologyRenderer_1 = require("./ArcGisSymbologyRenderer");
13
13
  const ArcGisFeatureQuery_1 = require("./ArcGisFeatureQuery");
14
- const ArcGisFeatureRenderer_1 = require("./ArcGisFeatureRenderer");
15
- const ArcGisFeaturePBF_1 = require("./ArcGisFeaturePBF");
16
- const ArcGisFeatureJSON_1 = require("./ArcGisFeatureJSON");
14
+ const ArcGisPbfFeatureReader_1 = require("./ArcGisPbfFeatureReader");
15
+ const ArcGisJsonFeatureReader_1 = require("./ArcGisJsonFeatureReader");
17
16
  const ArcGisFeatureResponse_1 = require("./ArcGisFeatureResponse");
17
+ const ArcGisCanvasRenderer_1 = require("./ArcGisCanvasRenderer");
18
18
  const loggerCategory = "MapLayersFormats.ArcGISFeature";
19
19
  /** Provide tiles from a ESRI ArcGIS Feature service
20
20
  * @internal
@@ -28,7 +28,6 @@ class ArcGisFeatureProvider extends core_frontend_1.ArcGISImageryProvider {
28
28
  this._drawDebugInfo = false;
29
29
  this._debugFeatureGeom = false;
30
30
  this._supportsCoordinatesQuantization = false;
31
- this._querySupported = false;
32
31
  this._layerId = 0;
33
32
  this._outSR = 102100;
34
33
  this._maxDepthFromLod = 0;
@@ -214,7 +213,7 @@ class ArcGisFeatureProvider extends core_frontend_1.ArcGISImageryProvider {
214
213
  async constructUrl(_row, _column, _zoomLevel) {
215
214
  return "";
216
215
  }
217
- constructFeatureUrl(row, column, zoomLevel, format, geomOverride, outFields, tolerance, returnGeometry) {
216
+ constructFeatureUrl(row, column, zoomLevel, format, resultType, geomOverride, outFields, tolerance, returnGeometry, maxAllowableOffset) {
218
217
  const tileExtent = this.getEPSG3857Extent(row, column, zoomLevel);
219
218
  const tileEnvelope = {
220
219
  xmin: tileExtent.left, ymin: tileExtent.bottom,
@@ -234,7 +233,7 @@ class ArcGisFeatureProvider extends core_frontend_1.ArcGISImageryProvider {
234
233
  }
235
234
  let quantizationParameters;
236
235
  const toleranceWorld = (tileExtent.top - tileExtent.bottom) / this.tileSize;
237
- if (this._supportsCoordinatesQuantization) {
236
+ if (resultType === "tile" && this._supportsCoordinatesQuantization) {
238
237
  quantizationParameters = {
239
238
  mode: "view",
240
239
  originPosition: "upperLeft",
@@ -242,15 +241,18 @@ class ArcGisFeatureProvider extends core_frontend_1.ArcGISImageryProvider {
242
241
  extent: tileEnvelope,
243
242
  };
244
243
  }
245
- const url = new ArcGisFeatureQuery_1.ArcGisFeatureQuery(this._settings.url, this._layerId, format, this._outSR, { geometry,
244
+ const url = new ArcGisFeatureQuery_1.ArcGisFeatureQuery(this._settings.url, this._layerId, format, this._outSR, {
245
+ geometry,
246
246
  geometryType: "esriGeometryEnvelope",
247
247
  returnExceededLimitFeatures: false,
248
248
  maxRecordCountFactor: 3,
249
- resultType: "tile",
249
+ resultType,
250
250
  quantizationParameters,
251
251
  outFields,
252
252
  returnGeometry,
253
- distance: (tolerance ? tolerance * toleranceWorld : undefined) });
253
+ distance: (tolerance ? tolerance * toleranceWorld : undefined),
254
+ maxAllowableOffset,
255
+ });
254
256
  let envelope;
255
257
  if (geomOverride && geomOverride.type === "esriGeometryEnvelope") {
256
258
  envelope = geomOverride.geom;
@@ -261,16 +263,27 @@ class ArcGisFeatureProvider extends core_frontend_1.ArcGISImageryProvider {
261
263
  return { url: url.toString(), envelope };
262
264
  }
263
265
  // Makes an identify request to ESRI MapService , and return it as a list MapLayerFeatureInfo object
264
- async getFeatureInfo(featureInfos, quadId, carto, _tree) {
266
+ async getFeatureInfo(featureInfos, quadId, carto, _tree, hit) {
265
267
  if (!this._querySupported || this.format === undefined)
266
268
  return;
267
- const cartoPoint = {
268
- x: this.getEPSG3857X(carto.longitudeDegrees),
269
- y: this.getEPSG3857Y(carto.latitudeDegrees),
270
- spatialReference: { wkid: 102100, latestWkid: 3857 },
269
+ const epsg3857X = this.getEPSG3857X(carto.longitudeDegrees);
270
+ const epsg3857Y = this.getEPSG3857Y(carto.latitudeDegrees);
271
+ const tileExtent = this.getEPSG3857Extent(quadId.row, quadId.column, quadId.level);
272
+ const tilePixelSize = (tileExtent.top - tileExtent.bottom) / this.tileSize;
273
+ const tolerancePixel = 3;
274
+ const toleranceWorld = tilePixelSize * tolerancePixel;
275
+ // Note: We used to pass a single point as the query 'geometry' and leverage the 'distance' parameter, turns
276
+ // out that approach was a lot slower on some server compared to using a single envelope.
277
+ const queryEnvelope = {
278
+ type: "esriGeometryEnvelope",
279
+ geom: {
280
+ xmin: epsg3857X - toleranceWorld, ymin: epsg3857Y - toleranceWorld,
281
+ xmax: epsg3857X + toleranceWorld, ymax: epsg3857Y + toleranceWorld,
282
+ spatialReference: { wkid: 102100, latestWkid: 3857 },
283
+ }
271
284
  };
272
285
  const doFeatureInfoQuery = async (format, outFields, returnGeometry) => {
273
- const infoUrl = this.constructFeatureUrl(quadId.row, quadId.column, quadId.level, format, { geom: cartoPoint, type: "esriGeometryPoint" }, outFields, 3 /* tolerance in pixel*/, returnGeometry);
286
+ const infoUrl = this.constructFeatureUrl(quadId.row, quadId.column, quadId.level, format, "standard", queryEnvelope, outFields, undefined, returnGeometry, toleranceWorld);
274
287
  if (!infoUrl || infoUrl.url.length === 0) {
275
288
  core_bentley_1.Logger.logError(loggerCategory, `Could not construct feature info query URL`);
276
289
  return undefined;
@@ -295,20 +308,22 @@ class ArcGisFeatureProvider extends core_frontend_1.ArcGISImageryProvider {
295
308
  }
296
309
  }
297
310
  try {
298
- const responseData = await doFeatureInfoQuery(this.format, "*", false);
311
+ // Feature Info requests are always made in JSON for now.
312
+ const responseData = await doFeatureInfoQuery("JSON", "*", true);
299
313
  if (!responseData) {
300
314
  core_bentley_1.Logger.logError(loggerCategory, `Could not get feature info data`);
301
315
  return;
302
316
  }
303
317
  if (responseData.exceedTransferLimit) {
304
- core_bentley_1.Logger.logError(loggerCategory, `Could not get feature info : transfert limit exeeded.`);
318
+ core_bentley_1.Logger.logError(loggerCategory, `Could not get feature info : transfer limit exceeded.`);
305
319
  return;
306
320
  }
307
- const featureReader = this.format === "PBF" ? new ArcGisFeaturePBF_1.ArcGisFeaturePBF(this._settings, this._layerMetadata) : new ArcGisFeatureJSON_1.ArcGisFeatureJSON(this._settings, this._layerMetadata);
308
- featureReader.readFeatureInfo(responseData, featureInfos);
321
+ const featureReader = new ArcGisJsonFeatureReader_1.ArcGisJsonFeatureReader(this._settings, this._layerMetadata);
322
+ const renderer = new core_frontend_1.ArcGisGraphicsRenderer(hit.iModel);
323
+ await featureReader.readFeatureInfo(responseData, featureInfos, renderer);
309
324
  }
310
325
  catch (e) {
311
- core_bentley_1.Logger.logError(loggerCategory, `Exception occured while loading feature info data : ${e}`);
326
+ core_bentley_1.Logger.logError(loggerCategory, `Exception occurred while loading feature info data : ${e}`);
312
327
  return;
313
328
  }
314
329
  return;
@@ -318,7 +333,7 @@ class ArcGisFeatureProvider extends core_frontend_1.ArcGISImageryProvider {
318
333
  return undefined;
319
334
  }
320
335
  const geomOverride = (refineEnvelope ? { geom: refineEnvelope, type: "esriGeometryEnvelope" } : undefined);
321
- const tileUrl = this.constructFeatureUrl(row, column, zoomLevel, this.format, geomOverride);
336
+ const tileUrl = this.constructFeatureUrl(row, column, zoomLevel, this.format, "tile", geomOverride);
322
337
  if (!tileUrl || tileUrl.url.length === 0) {
323
338
  core_bentley_1.Logger.logError(loggerCategory, `Could not construct feature query URL for tile ${zoomLevel}/${row}/${column}`);
324
339
  return undefined;
@@ -378,8 +393,8 @@ class ArcGisFeatureProvider extends core_frontend_1.ArcGISImageryProvider {
378
393
  core_bentley_1.Logger.logError(loggerCategory, `Could not compute data transformation for tile (${zoomLevel}/${row}/${column})`);
379
394
  }
380
395
  }
381
- const renderer = new ArcGisFeatureRenderer_1.ArcGisFeatureRenderer(ctx, this._symbologyRenderer, transfo);
382
- const featureReader = this.format === "PBF" ? new ArcGisFeaturePBF_1.ArcGisFeaturePBF(this._settings, this._layerMetadata) : new ArcGisFeatureJSON_1.ArcGisFeatureJSON(this._settings, this._layerMetadata);
396
+ const renderer = new ArcGisCanvasRenderer_1.ArcGisCanvasRenderer(ctx, this._symbologyRenderer, transfo);
397
+ const featureReader = this.format === "PBF" ? new ArcGisPbfFeatureReader_1.ArcGisPbfFeatureReader(this._settings, this._layerMetadata) : new ArcGisJsonFeatureReader_1.ArcGisJsonFeatureReader(this._settings, this._layerMetadata);
383
398
  const getSubEnvelopes = (envelope) => {
384
399
  const dx = (envelope.xmax - envelope.xmin) * 0.5;
385
400
  const dy = (envelope.xmax - envelope.xmin) * 0.5;
@@ -432,7 +447,7 @@ class ArcGisFeatureProvider extends core_frontend_1.ArcGISImageryProvider {
432
447
  }
433
448
  }
434
449
  else {
435
- featureReader.readAndRender(responseData, renderer);
450
+ await featureReader.readAndRender(responseData, renderer);
436
451
  }
437
452
  };
438
453
  await renderData();
@@ -1 +1 @@
1
- {"version":3,"file":"ArcGisFeatureProvider.js","sourceRoot":"","sources":["../../../src/ArcGisFeature/ArcGisFeatureProvider.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 { Cartographic, ImageMapLayerSettings, ImageSource, ImageSourceFormat, ServerError } from \"@itwin/core-common\";\r\nimport { base64StringToUint8Array, IModelStatus, Logger } from \"@itwin/core-bentley\";\r\nimport { Matrix4d, Point3d, Range2d, Transform } from \"@itwin/core-geometry\";\r\nimport { ArcGisErrorCode, ArcGISImageryProvider, ArcGISServiceMetadata, ArcGisUtilities, ImageryMapTileTree, MapCartoRectangle, MapLayerFeatureInfo, MapLayerImageryProviderStatus, QuadId } from \"@itwin/core-frontend\";\r\nimport { ArcGisSymbologyRenderer } from \"./ArcGisSymbologyRenderer\";\r\nimport { ArcGisExtent, ArcGisFeatureFormat, ArcGisFeatureQuery, ArcGisGeometry, FeatureQueryQuantizationParams } from \"./ArcGisFeatureQuery\";\r\nimport { ArcGisFeatureRenderer } from \"./ArcGisFeatureRenderer\";\r\nimport { ArcGisFeaturePBF } from \"./ArcGisFeaturePBF\";\r\nimport { ArcGisFeatureJSON } from \"./ArcGisFeatureJSON\";\r\nimport { ArcGisFeatureResponse, ArcGisResponseData } from \"./ArcGisFeatureResponse\";\r\nimport { ArcGisFeatureReader } from \"./ArcGisFeatureReader\";\r\nconst loggerCategory = \"MapLayersFormats.ArcGISFeature\";\r\n/**\r\n* @internal\r\n*/\r\ninterface ArcGisFeatureUrl {\r\n url: string;\r\n envelope?: ArcGisExtent; // envelope representing the current computed URL, requiered to refine request.\r\n}\r\n\r\n/** Provide tiles from a ESRI ArcGIS Feature service\r\n* @internal\r\n*/\r\nexport class ArcGisFeatureProvider extends ArcGISImageryProvider {\r\n // Debug flags, should always be commited to FALSE !\r\n private _drawDebugInfo = false;\r\n private _debugFeatureGeom = false;\r\n\r\n private _supportsCoordinatesQuantization = false;\r\n private _querySupported = false;\r\n private _layerId = 0;\r\n private _layerMetadata: any;\r\n private _format: ArcGisFeatureFormat|undefined;\r\n public serviceJson: any;\r\n private _symbologyRenderer: ArcGisSymbologyRenderer|undefined;\r\n private static readonly _nbSubTiles = 2;\r\n private _outSR = 102100;\r\n\r\n private _maxDepthFromLod = 0;\r\n private _minDepthFromLod = 0;\r\n public override get minimumZoomLevel(): number { return this._minDepthFromLod; }\r\n public override get maximumZoomLevel(): number { return this._maxDepthFromLod; }\r\n\r\n private static _extentCache = new Map<string, any>();\r\n\r\n constructor(settings: ImageMapLayerSettings) {\r\n super(settings, true);\r\n }\r\n\r\n public override async initialize(): Promise<void> {\r\n const metadata = await this.getServiceJson();\r\n const json = metadata?.content;\r\n\r\n if (json === undefined) {\r\n Logger.logError(loggerCategory, \"Could not get service JSON\");\r\n throw new ServerError(IModelStatus.ValidationFailed, \"\");\r\n }\r\n\r\n if (json?.error?.code === ArcGisErrorCode.TokenRequired || json?.error?.code === ArcGisErrorCode.InvalidToken) {\r\n // Check again layer status, it might have change during await.\r\n if (this.status === MapLayerImageryProviderStatus.Valid) {\r\n this.setStatus(MapLayerImageryProviderStatus.RequireAuth);\r\n return;\r\n }\r\n }\r\n\r\n if (json.capabilities) {\r\n this._querySupported = json.capabilities.indexOf(\"Query\") >= 0;\r\n if (!this._querySupported)\r\n throw new ServerError(IModelStatus.ValidationFailed, \"\");\r\n }\r\n\r\n this.serviceJson = json;\r\n\r\n let foundVisibleSubLayer = false;\r\n if (this._settings.subLayers.length >= 0) {\r\n // There is more than sub-layer for this layer, pick the first visible one.\r\n for (const layer of this._settings.subLayers) {\r\n if (layer.visible && typeof layer.id === \"number\") {\r\n this._layerId = layer.id;\r\n foundVisibleSubLayer = true;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n if (!foundVisibleSubLayer && json !== undefined) {\r\n // No suitable sublayer was specified on the layerSettings object, lets find a default one in the capabilities\r\n\r\n // Check layer metadata\r\n if (Array.isArray(this.serviceJson.layers) && this.serviceJson.layers.length >= 1) {\r\n\r\n const hasDefaultVisibility = Object.keys(this.serviceJson.layers[0]).includes(\"defaultVisibility\");\r\n if (hasDefaultVisibility) {\r\n for (const layer of this.serviceJson.layers) {\r\n if (layer.defaultVisibility) {\r\n this._layerId = layer.id;\r\n break;\r\n }\r\n }\r\n } else {\r\n // On some older servers, the default visiblity is on the layer capabilities (i.e. not the service capabilities)\r\n for (const layer of this.serviceJson.layers) {\r\n const layerJson = await this.getLayerMetadata(layer.id);\r\n if (!layerJson) {\r\n continue;\r\n }\r\n\r\n if (layerJson.defaultVisibility) {\r\n this._layerId = layer.id;\r\n this._layerMetadata = layerJson;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n } else {\r\n // There is no layer to publish? Something is off with this server..\r\n throw new ServerError(IModelStatus.ValidationFailed, \"\");\r\n }\r\n }\r\n\r\n // Make sure we cache layer info (i.e. rendering info)\r\n if (!this._layerMetadata) {\r\n\r\n this._layerMetadata = await this.getLayerMetadata(this._layerId);\r\n if (!this._layerMetadata) {\r\n Logger.logError(loggerCategory, \"Could not layer metadata\");\r\n throw new ServerError(IModelStatus.ValidationFailed, \"\");\r\n }\r\n }\r\n\r\n // Parse server version\r\n let majorVersion: number|undefined;\r\n if (this.serviceJson?.currentVersion) {\r\n try {\r\n majorVersion = Math.trunc(this.serviceJson?.currentVersion);\r\n } catch {\r\n }\r\n }\r\n\r\n // Coordinates Quantization: If supported, server will transform for us the coordinates in the Tile coordinate space (pixels, origin = upper left corner\r\n // If not supported, transformation will be applied client side.\r\n // Note: For some reasons, even though 'supportsCoordinatesQuantization' is set to 'true' on the layer metadata, server will give an error message for server version < 11\r\n if (majorVersion && majorVersion >= 11 && this._layerMetadata.supportsCoordinatesQuantization) {\r\n this._supportsCoordinatesQuantization = true;\r\n }\r\n\r\n // Check supported query formats: JSON and PBF are currently implemented by this provider\r\n // Note: needs to be checked on the layer metadata, service metadata advertises a different set of formats\r\n // Also, since PBF format does not support floating points, there is no point using this format if supportsCoordinatesQuantization is not available.\r\n if (this._layerMetadata.supportedQueryFormats) {\r\n const formats: string[] = this._layerMetadata.supportedQueryFormats.split(\", \");\r\n if (formats.includes(\"PBF\") && this._supportsCoordinatesQuantization ) {\r\n this._format = \"PBF\";\r\n } else if (formats.includes (\"JSON\")) {\r\n this._format = \"JSON\";\r\n }\r\n }\r\n\r\n if (!this._format) {\r\n Logger.logError(loggerCategory, \"Could not get request format from service JSON\");\r\n throw new ServerError(IModelStatus.ValidationFailed, \"\");\r\n }\r\n\r\n // Read range using full extent from service metadata\r\n if (this._layerMetadata?.extent) {\r\n const layerExtent = this._layerMetadata.extent;\r\n if (layerExtent.spatialReference.latestWkid === 3857 || layerExtent.spatialReference.wkid === 102100) {\r\n this.setCartoRangeFromExtentJson(layerExtent);\r\n }\r\n }\r\n\r\n if (!this.cartoRange) {\r\n // Range could not be found (or is not in a coordinate system we support), make a request to compute the extent\r\n try {\r\n const extentJson = await this.fetchLayerExtent();\r\n\r\n if (extentJson)\r\n this.setCartoRangeFromExtentJson(extentJson);\r\n else\r\n Logger.logWarning(loggerCategory, `Could not get features extent, disabling extent filtering`);\r\n } catch {\r\n Logger.logError(loggerCategory, `Could not get feature extent`);\r\n }\r\n }\r\n\r\n // Check for minScale / max scale\r\n const minScale = this._layerMetadata?.minScale || undefined; // undefined, 0 -> undefined\r\n const maxScale = this._layerMetadata?.maxScale || undefined; // undefined, 0 -> undefined\r\n const scales = ArcGisUtilities.getZoomLevelsScales(this.defaultMaximumZoomLevel, this.tileSize, minScale, maxScale, 1.0);\r\n if (scales.minLod)\r\n this._minDepthFromLod = scales.minLod;\r\n\r\n // Some servers advertises a max LOD of 0, it should be interpreted as 'not defined' (otherwise a max lod of 0 would would mean never display anything)\r\n this._maxDepthFromLod = (scales.maxLod ? scales.maxLod : this.defaultMaximumZoomLevel);\r\n\r\n this._symbologyRenderer = new ArcGisSymbologyRenderer(this._layerMetadata?.geometryType, this._layerMetadata?.drawingInfo?.renderer);\r\n }\r\n\r\n private async fetchLayerExtent() {\r\n let extentJson: any;\r\n const tmpUrl = new URL(this._settings.url);\r\n tmpUrl.pathname = `${tmpUrl.pathname}/${this._layerId}/query`;\r\n tmpUrl.searchParams.append(\"where\", \"1=1\");\r\n tmpUrl.searchParams.append(\"outSR\", \"3857\");\r\n tmpUrl.searchParams.append(\"returnExtentOnly\", \"true\");\r\n tmpUrl.searchParams.append(\"f\", \"json\");\r\n const cached = ArcGisFeatureProvider._extentCache.get(tmpUrl.toString());\r\n if (cached) {\r\n extentJson = cached;\r\n } else {\r\n const response = await this.fetch(tmpUrl, { method: \"GET\" });\r\n extentJson = await response.json();\r\n ArcGisFeatureProvider._extentCache.set(tmpUrl.toString(), extentJson);\r\n }\r\n return (extentJson ? extentJson.extent : undefined);\r\n }\r\n\r\n private setCartoRangeFromExtentJson(extent: any) {\r\n const range3857 = Range2d.createFrom({\r\n low: { x: extent.xmin, y: extent.ymin },\r\n high: { x: extent.xmax, y: extent.ymax },\r\n });\r\n\r\n const west = this.getEPSG4326Lon(range3857.xLow);\r\n const south = this.getEPSG4326Lat(range3857.yLow);\r\n const east = this.getEPSG4326Lon(range3857.xHigh);\r\n const north = this.getEPSG4326Lat(range3857.yHigh);\r\n this.cartoRange = MapCartoRectangle.fromDegrees(west, south, east, north);\r\n }\r\n\r\n protected async getLayerMetadata(layerId: number) {\r\n let metadata: ArcGISServiceMetadata|undefined;\r\n try {\r\n const url = new URL(this._settings.url);\r\n url.pathname = `${url.pathname}/${layerId}`;\r\n metadata = await ArcGisUtilities.getServiceJson(url.toString(), this._settings.formatId, this._settings.userName, this._settings.password, this._accessTokenRequired);\r\n } catch {\r\n\r\n }\r\n return metadata?.content;\r\n }\r\n\r\n public override get tileSize(): number { return 512; }\r\n public get format(): ArcGisFeatureFormat|undefined { return this._format; }\r\n\r\n // We don't use this method inside this provider (see constructFeatureUrl), but since this is an abstract method, we need to define something\r\n public async constructUrl(_row: number, _column: number, _zoomLevel: number): Promise<string> {\r\n return \"\";\r\n }\r\n\r\n public constructFeatureUrl(row: number, column: number, zoomLevel: number, format: ArcGisFeatureFormat, geomOverride?: ArcGisGeometry, outFields?: string, tolerance?: number, returnGeometry?: boolean): ArcGisFeatureUrl | undefined {\r\n\r\n const tileExtent = this.getEPSG3857Extent(row, column, zoomLevel);\r\n const tileEnvelope = {\r\n xmin: tileExtent.left, ymin: tileExtent.bottom,\r\n xmax: tileExtent.right, ymax: tileExtent.top,\r\n spatialReference: {wkid:102100, latestWkid:3857},\r\n };\r\n\r\n // Actual spatial filter.\r\n // By default, we request the tile extent. If 'cartoPoint' is specified,\r\n // we restrict the spatial to specific point. (i.e. GetFeatureInfo requests)\r\n // If envelope is provided, it has the priority over 'cartoPoint'\r\n let geometry: ArcGisGeometry|undefined;\r\n if (geomOverride) {\r\n geometry = geomOverride;\r\n } else {\r\n geometry = {geom: tileEnvelope, type: \"esriGeometryEnvelope\"};\r\n }\r\n\r\n let quantizationParameters: FeatureQueryQuantizationParams|undefined;\r\n const toleranceWorld = (tileExtent.top - tileExtent.bottom) / this.tileSize;\r\n if (this._supportsCoordinatesQuantization) {\r\n quantizationParameters = {\r\n mode: \"view\",\r\n originPosition: \"upperLeft\",\r\n tolerance: toleranceWorld, // pixel size in world units\r\n extent: tileEnvelope,\r\n };\r\n }\r\n const url = new ArcGisFeatureQuery(\r\n this._settings.url,\r\n this._layerId,\r\n format,\r\n this._outSR,\r\n { geometry,\r\n geometryType: \"esriGeometryEnvelope\",\r\n returnExceededLimitFeatures: false,\r\n maxRecordCountFactor: 3, // This was grabbed from the ESRI web viewer request, not sure where this factor come from\r\n resultType: \"tile\",\r\n quantizationParameters,\r\n outFields,\r\n returnGeometry,\r\n distance: (tolerance ? tolerance*toleranceWorld :undefined) });\r\n\r\n let envelope: ArcGisExtent | undefined;\r\n if (geomOverride && geomOverride.type === \"esriGeometryEnvelope\"){\r\n envelope = geomOverride.geom as ArcGisExtent;\r\n } else {\r\n envelope = tileEnvelope;\r\n }\r\n\r\n return {url: url.toString(), envelope} ;\r\n\r\n }\r\n\r\n // Makes an identify request to ESRI MapService , and return it as a list MapLayerFeatureInfo object\r\n public override async getFeatureInfo(featureInfos: MapLayerFeatureInfo[], quadId: QuadId, carto: Cartographic, _tree: ImageryMapTileTree): Promise<void> {\r\n if (!this._querySupported || this.format === undefined)\r\n return;\r\n\r\n const cartoPoint = {\r\n x: this.getEPSG3857X(carto.longitudeDegrees),\r\n y: this.getEPSG3857Y(carto.latitudeDegrees),\r\n spatialReference: {wkid:102100, latestWkid:3857},\r\n };\r\n\r\n const doFeatureInfoQuery = async (format: ArcGisFeatureFormat, outFields?: string, returnGeometry?: boolean,) => {\r\n const infoUrl = this.constructFeatureUrl(quadId.row, quadId.column, quadId.level, format, {geom: cartoPoint, type: \"esriGeometryPoint\"}, outFields, 3 /* tolerance in pixel*/, returnGeometry);\r\n\r\n if (!infoUrl || infoUrl.url.length === 0) {\r\n Logger.logError(loggerCategory, `Could not construct feature info query URL`);\r\n return undefined;\r\n }\r\n\r\n const response = this.fetch(new URL(infoUrl.url), { method: \"GET\" });\r\n\r\n const featureResponse = new ArcGisFeatureResponse(format, response);\r\n return featureResponse.getResponseData();\r\n };\r\n\r\n if (this._debugFeatureGeom) {\r\n try {\r\n let responseData = await doFeatureInfoQuery(\"PBF\", \"\", true);\r\n if (responseData) {\r\n Logger.logInfo(loggerCategory, JSON.stringify(responseData.data.toObject()));\r\n }\r\n responseData = await doFeatureInfoQuery(\"JSON\", \"\", true);\r\n if (responseData) {\r\n Logger.logInfo(loggerCategory, JSON.stringify(responseData.data));\r\n }\r\n } catch (e) {\r\n Logger.logInfo(loggerCategory, `Error occured with debug FeatureInfo: ${e}`);\r\n }\r\n }\r\n\r\n try {\r\n const responseData = await doFeatureInfoQuery(this.format, \"*\", false);\r\n if (!responseData) {\r\n Logger.logError(loggerCategory, `Could not get feature info data`);\r\n return;\r\n }\r\n if (responseData.exceedTransferLimit) {\r\n Logger.logError(loggerCategory, `Could not get feature info : transfert limit exeeded.`);\r\n return;\r\n }\r\n const featureReader: ArcGisFeatureReader = this.format === \"PBF\" ? new ArcGisFeaturePBF(this._settings, this._layerMetadata) : new ArcGisFeatureJSON(this._settings, this._layerMetadata);\r\n featureReader.readFeatureInfo(responseData, featureInfos);\r\n\r\n } catch (e) {\r\n Logger.logError(loggerCategory, `Exception occured while loading feature info data : ${e}`);\r\n return;\r\n }\r\n\r\n return;\r\n }\r\n\r\n private async fetchTile(row: number, column: number, zoomLevel: number, refineEnvelope?: ArcGisExtent): Promise<ArcGisFeatureResponse | undefined> {\r\n if (!this.format) {\r\n return undefined;\r\n }\r\n\r\n const geomOverride: ArcGisGeometry|undefined = (refineEnvelope ? {geom: refineEnvelope, type: \"esriGeometryEnvelope\"} : undefined);\r\n const tileUrl = this.constructFeatureUrl(row, column, zoomLevel, this.format, geomOverride);\r\n if (!tileUrl || tileUrl.url.length === 0) {\r\n Logger.logError(loggerCategory, `Could not construct feature query URL for tile ${zoomLevel}/${row}/${column}`);\r\n return undefined;\r\n }\r\n\r\n const response = this.fetch(new URL(tileUrl.url), { method: \"GET\" });\r\n return new ArcGisFeatureResponse(this.format, response, tileUrl.envelope);\r\n }\r\n\r\n public drawTileDebugInfo(row: number, column: number, zoomLevel: number, context: CanvasRenderingContext2D ){\r\n context.fillStyle = \"cyan\";\r\n context.strokeRect(0, 0, this.tileSize, this.tileSize);\r\n context.font = \"30px Arial\";\r\n context.lineWidth = 5;\r\n context.fillText(`${zoomLevel}-${row}-${column}`, 10, 50);\r\n }\r\n\r\n // Compute transform that provides coordinates in the canvas coordinate system (pixels, origin = top-left)\r\n // from coordinate in world (i.e EPSG:3857)\r\n protected computeTileWorld2CanvasTransform(row: number, column: number, zoomLevel: number) {\r\n\r\n const tileExtentWorld3857 = this.getEPSG3857Extent(row, column, zoomLevel);\r\n const worldTileWidth = tileExtentWorld3857.right - tileExtentWorld3857.left;\r\n const canvasTileWidth = this.tileSize;\r\n const world2CanvasRatio = canvasTileWidth / worldTileWidth;\r\n const worldTileOrigin = Point3d.create(tileExtentWorld3857.left, tileExtentWorld3857.bottom);\r\n const worldTileExtent = Point3d.create(tileExtentWorld3857.right, tileExtentWorld3857.top);\r\n const canvasTileOriginOffset = worldTileOrigin.clone();\r\n const canvasTileExtentOffset = worldTileExtent.clone();\r\n canvasTileOriginOffset.scaleInPlace(world2CanvasRatio);\r\n canvasTileExtentOffset.scaleInPlace(world2CanvasRatio);\r\n const xTranslate = -1*canvasTileOriginOffset.x;\r\n\r\n // Canvas origin is uppler left corner, so we need to flip the y axsis\r\n const yTranslate = canvasTileExtentOffset.y; // y-axis flip\r\n const yWorld2CanvasRatio = -1*world2CanvasRatio; // y-axis flip\r\n\r\n const matrix = Matrix4d.createTranslationAndScaleXYZ(xTranslate, yTranslate, 0, world2CanvasRatio, yWorld2CanvasRatio, 1);\r\n return matrix.asTransform;\r\n }\r\n\r\n public override async loadTile(row: number, column: number, zoomLevel: number): Promise<ImageSource | undefined> {\r\n\r\n if ((this.status === MapLayerImageryProviderStatus.RequireAuth)) {\r\n return undefined;\r\n }\r\n const canvas = document.createElement(\"canvas\");\r\n canvas.width = this.tileSize;\r\n canvas.height = this.tileSize;\r\n\r\n const ctx = canvas.getContext(\"2d\");\r\n if (ctx == null) {\r\n Logger.logError(loggerCategory, \"No canvas context available for loading tile.\");\r\n return undefined;\r\n }\r\n\r\n if (!this._symbologyRenderer) {\r\n Logger.logError(loggerCategory, \"No symbology renderer available for loading tile.\");\r\n return undefined;\r\n }\r\n try {\r\n\r\n // Compute transform if CoordinatesQuantization is not supported by service\r\n let transfo: Transform | undefined;\r\n if (!this._supportsCoordinatesQuantization) {\r\n transfo = this.computeTileWorld2CanvasTransform(row, column, zoomLevel);\r\n if (!transfo) {\r\n Logger.logError(loggerCategory, `Could not compute data transformation for tile (${zoomLevel}/${row}/${column})`);\r\n }\r\n }\r\n\r\n const renderer = new ArcGisFeatureRenderer(ctx, this._symbologyRenderer, transfo);\r\n const featureReader: ArcGisFeatureReader = this.format === \"PBF\" ? new ArcGisFeaturePBF(this._settings, this._layerMetadata) : new ArcGisFeatureJSON(this._settings, this._layerMetadata);\r\n\r\n const getSubEnvelopes = (envelope: ArcGisExtent): ArcGisExtent[] => {\r\n const dx = (envelope.xmax - envelope.xmin) * 0.5;\r\n const dy = (envelope.xmax - envelope.xmin) * 0.5;\r\n const subEnvelopes: ArcGisExtent[] = [];\r\n for (let posX=0; posX<ArcGisFeatureProvider._nbSubTiles; posX++) {\r\n for (let posY=0; posY<ArcGisFeatureProvider._nbSubTiles; posY++) {\r\n subEnvelopes.push({\r\n xmin: envelope.xmin + (dx*posX), ymin: envelope.ymin + (dy*posY),\r\n xmax: envelope.xmin + (dx*(posX+1)), ymax: envelope.ymin + (dy*(posY+1)),\r\n spatialReference: {wkid:102100, latestWkid:3857},\r\n });\r\n }\r\n }\r\n return subEnvelopes;\r\n };\r\n\r\n // The strategy here is simple: we make a request for an area that represents the current tile (i.e envelope),\r\n // the server will either return the requested data OR a 'exceedTransferLimit' message (too much data to transfers).\r\n // In the latter case, we subdivide the previous request envelope in for 4 sub-envelopes,\r\n // and repeat again until we get data.\r\n const renderData = async (envelope?: ArcGisExtent) => {\r\n let response: ArcGisFeatureResponse | undefined;\r\n let responseData: ArcGisResponseData | undefined;\r\n try {\r\n response = await this.fetchTile(row, column, zoomLevel, envelope);\r\n if (!response) {\r\n Logger.logError(loggerCategory, `Error occurred while fetching tile (${zoomLevel}/${row}/${column})`);\r\n return ;\r\n }\r\n\r\n responseData = await response.getResponseData();\r\n if (!responseData) {\r\n Logger.logError(loggerCategory, `Could not get response data for tile (${zoomLevel}/${row}/${column})`);\r\n return ;\r\n }\r\n } catch (e) {\r\n Logger.logError(loggerCategory, `Exception occurred while loading tile (${zoomLevel}/${row}/${column}) : ${e}`);\r\n return;\r\n }\r\n\r\n if (responseData.exceedTransferLimit) {\r\n if (response.envelope) {\r\n const subEnvelopes = getSubEnvelopes(response.envelope);\r\n const renderPromises = [];\r\n for (const subEnvelope of subEnvelopes) {\r\n renderPromises.push(renderData(subEnvelope));\r\n }\r\n await Promise.all(renderPromises);\r\n } else {\r\n Logger.logError(loggerCategory, `Request exceeded transfer limit, could not refine request`);\r\n }\r\n } else {\r\n featureReader.readAndRender(responseData, renderer);\r\n }\r\n };\r\n await renderData();\r\n if (this._drawDebugInfo)\r\n this.drawTileDebugInfo(row, column, zoomLevel, ctx);\r\n } catch (e) {\r\n Logger.logError(loggerCategory, `Exception occurred while loading tile (${zoomLevel}/${row}/${column}) : ${e}`);\r\n }\r\n\r\n try {\r\n const dataUrl = canvas.toDataURL(\"image/png\");\r\n const header = \"data:image/png;base64,\";\r\n const dataUrl2 = dataUrl.substring(header.length);\r\n return new ImageSource(base64StringToUint8Array(dataUrl2), ImageSourceFormat.Png);\r\n } catch (e) {\r\n Logger.logError(loggerCategory, `Exception occurred while rendering tile (${zoomLevel}/${row}/${column}) : ${e}.`);\r\n }\r\n\r\n return undefined;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"ArcGisFeatureProvider.js","sourceRoot":"","sources":["../../../src/ArcGisFeature/ArcGisFeatureProvider.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 { Cartographic, ImageMapLayerSettings, ImageSource, ImageSourceFormat, ServerError } from \"@itwin/core-common\";\nimport { base64StringToUint8Array, IModelStatus, Logger } from \"@itwin/core-bentley\";\nimport { Matrix4d, Point3d, Range2d, Transform } from \"@itwin/core-geometry\";\nimport { ArcGisErrorCode, ArcGisGraphicsRenderer, ArcGISImageryProvider, ArcGISServiceMetadata, ArcGisUtilities, HitDetail, ImageryMapTileTree, MapCartoRectangle, MapLayerFeatureInfo, MapLayerImageryProviderStatus, QuadId } from \"@itwin/core-frontend\";\nimport { ArcGisSymbologyRenderer } from \"./ArcGisSymbologyRenderer\";\nimport { ArcGisExtent, ArcGisFeatureFormat, ArcGisFeatureQuery, ArcGisFeatureResultType, ArcGisGeometry, FeatureQueryQuantizationParams } from \"./ArcGisFeatureQuery\";\nimport { ArcGisPbfFeatureReader } from \"./ArcGisPbfFeatureReader\";\nimport { ArcGisJsonFeatureReader } from \"./ArcGisJsonFeatureReader\";\nimport { ArcGisFeatureResponse, ArcGisResponseData } from \"./ArcGisFeatureResponse\";\nimport { ArcGisFeatureReader } from \"./ArcGisFeatureReader\";\n\nimport { ArcGisCanvasRenderer } from \"./ArcGisCanvasRenderer\";\nconst loggerCategory = \"MapLayersFormats.ArcGISFeature\";\n\n/**\n* @internal\n*/\ninterface ArcGisFeatureUrl {\n url: string;\n envelope?: ArcGisExtent; // envelope representing the current computed URL, required to refine request.\n}\n\n/** Provide tiles from a ESRI ArcGIS Feature service\n* @internal\n*/\nexport class ArcGisFeatureProvider extends ArcGISImageryProvider {\n // Debug flags, should always be commited to FALSE !\n private _drawDebugInfo = false;\n private _debugFeatureGeom = false;\n\n private _supportsCoordinatesQuantization = false;\n\n private _layerId = 0;\n private _layerMetadata: any;\n private _format: ArcGisFeatureFormat | undefined;\n public serviceJson: any;\n private _symbologyRenderer: ArcGisSymbologyRenderer | undefined;\n private static readonly _nbSubTiles = 2;\n private _outSR = 102100;\n\n private _maxDepthFromLod = 0;\n private _minDepthFromLod = 0;\n public override get minimumZoomLevel(): number { return this._minDepthFromLod; }\n public override get maximumZoomLevel(): number { return this._maxDepthFromLod; }\n\n private static _extentCache = new Map<string, any>();\n\n constructor(settings: ImageMapLayerSettings) {\n super(settings, true);\n }\n\n public override async initialize(): Promise<void> {\n const metadata = await this.getServiceJson();\n const json = metadata?.content;\n\n if (json === undefined) {\n Logger.logError(loggerCategory, \"Could not get service JSON\");\n throw new ServerError(IModelStatus.ValidationFailed, \"\");\n }\n\n if (json?.error?.code === ArcGisErrorCode.TokenRequired || json?.error?.code === ArcGisErrorCode.InvalidToken) {\n // Check again layer status, it might have change during await.\n if (this.status === MapLayerImageryProviderStatus.Valid) {\n this.setStatus(MapLayerImageryProviderStatus.RequireAuth);\n return;\n }\n }\n\n if (json.capabilities) {\n this._querySupported = json.capabilities.indexOf(\"Query\") >= 0;\n if (!this._querySupported)\n throw new ServerError(IModelStatus.ValidationFailed, \"\");\n }\n\n this.serviceJson = json;\n\n let foundVisibleSubLayer = false;\n if (this._settings.subLayers.length >= 0) {\n // There is more than sub-layer for this layer, pick the first visible one.\n for (const layer of this._settings.subLayers) {\n if (layer.visible && typeof layer.id === \"number\") {\n this._layerId = layer.id;\n foundVisibleSubLayer = true;\n break;\n }\n }\n }\n\n if (!foundVisibleSubLayer && json !== undefined) {\n // No suitable sublayer was specified on the layerSettings object, lets find a default one in the capabilities\n\n // Check layer metadata\n if (Array.isArray(this.serviceJson.layers) && this.serviceJson.layers.length >= 1) {\n\n const hasDefaultVisibility = Object.keys(this.serviceJson.layers[0]).includes(\"defaultVisibility\");\n if (hasDefaultVisibility) {\n for (const layer of this.serviceJson.layers) {\n if (layer.defaultVisibility) {\n this._layerId = layer.id;\n break;\n }\n }\n } else {\n // On some older servers, the default visiblity is on the layer capabilities (i.e. not the service capabilities)\n for (const layer of this.serviceJson.layers) {\n const layerJson = await this.getLayerMetadata(layer.id);\n if (!layerJson) {\n continue;\n }\n\n if (layerJson.defaultVisibility) {\n this._layerId = layer.id;\n this._layerMetadata = layerJson;\n break;\n }\n }\n }\n\n } else {\n // There is no layer to publish? Something is off with this server..\n throw new ServerError(IModelStatus.ValidationFailed, \"\");\n }\n }\n\n // Make sure we cache layer info (i.e. rendering info)\n if (!this._layerMetadata) {\n\n this._layerMetadata = await this.getLayerMetadata(this._layerId);\n if (!this._layerMetadata) {\n Logger.logError(loggerCategory, \"Could not layer metadata\");\n throw new ServerError(IModelStatus.ValidationFailed, \"\");\n }\n }\n\n // Parse server version\n let majorVersion: number | undefined;\n if (this.serviceJson?.currentVersion) {\n try {\n majorVersion = Math.trunc(this.serviceJson?.currentVersion);\n } catch {\n }\n }\n\n // Coordinates Quantization: If supported, server will transform for us the coordinates in the Tile coordinate space (pixels, origin = upper left corner\n // If not supported, transformation will be applied client side.\n // Note: For some reasons, even though 'supportsCoordinatesQuantization' is set to 'true' on the layer metadata, server will give an error message for server version < 11\n if (majorVersion && majorVersion >= 11 && this._layerMetadata.supportsCoordinatesQuantization) {\n this._supportsCoordinatesQuantization = true;\n }\n\n // Check supported query formats: JSON and PBF are currently implemented by this provider\n // Note: needs to be checked on the layer metadata, service metadata advertises a different set of formats\n // Also, since PBF format does not support floating points, there is no point using this format if supportsCoordinatesQuantization is not available.\n if (this._layerMetadata.supportedQueryFormats) {\n const formats: string[] = this._layerMetadata.supportedQueryFormats.split(\", \");\n if (formats.includes(\"PBF\") && this._supportsCoordinatesQuantization) {\n this._format = \"PBF\";\n } else if (formats.includes(\"JSON\")) {\n this._format = \"JSON\";\n }\n }\n\n if (!this._format) {\n Logger.logError(loggerCategory, \"Could not get request format from service JSON\");\n throw new ServerError(IModelStatus.ValidationFailed, \"\");\n }\n\n // Read range using full extent from service metadata\n if (this._layerMetadata?.extent) {\n const layerExtent = this._layerMetadata.extent;\n if (layerExtent.spatialReference.latestWkid === 3857 || layerExtent.spatialReference.wkid === 102100) {\n this.setCartoRangeFromExtentJson(layerExtent);\n }\n }\n\n if (!this.cartoRange) {\n // Range could not be found (or is not in a coordinate system we support), make a request to compute the extent\n try {\n const extentJson = await this.fetchLayerExtent();\n\n if (extentJson)\n this.setCartoRangeFromExtentJson(extentJson);\n else\n Logger.logWarning(loggerCategory, `Could not get features extent, disabling extent filtering`);\n } catch {\n Logger.logError(loggerCategory, `Could not get feature extent`);\n }\n }\n\n // Check for minScale / max scale\n const minScale = this._layerMetadata?.minScale || undefined; // undefined, 0 -> undefined\n const maxScale = this._layerMetadata?.maxScale || undefined; // undefined, 0 -> undefined\n const scales = ArcGisUtilities.getZoomLevelsScales(this.defaultMaximumZoomLevel, this.tileSize, minScale, maxScale, 1.0);\n if (scales.minLod)\n this._minDepthFromLod = scales.minLod;\n\n // Some servers advertises a max LOD of 0, it should be interpreted as 'not defined' (otherwise a max lod of 0 would would mean never display anything)\n this._maxDepthFromLod = (scales.maxLod ? scales.maxLod : this.defaultMaximumZoomLevel);\n\n this._symbologyRenderer = new ArcGisSymbologyRenderer(this._layerMetadata?.geometryType, this._layerMetadata?.drawingInfo?.renderer);\n }\n\n private async fetchLayerExtent() {\n let extentJson: any;\n const tmpUrl = new URL(this._settings.url);\n tmpUrl.pathname = `${tmpUrl.pathname}/${this._layerId}/query`;\n tmpUrl.searchParams.append(\"where\", \"1=1\");\n tmpUrl.searchParams.append(\"outSR\", \"3857\");\n tmpUrl.searchParams.append(\"returnExtentOnly\", \"true\");\n tmpUrl.searchParams.append(\"f\", \"json\");\n const cached = ArcGisFeatureProvider._extentCache.get(tmpUrl.toString());\n if (cached) {\n extentJson = cached;\n } else {\n const response = await this.fetch(tmpUrl, { method: \"GET\" });\n extentJson = await response.json();\n ArcGisFeatureProvider._extentCache.set(tmpUrl.toString(), extentJson);\n }\n return (extentJson ? extentJson.extent : undefined);\n }\n\n private setCartoRangeFromExtentJson(extent: any) {\n const range3857 = Range2d.createFrom({\n low: { x: extent.xmin, y: extent.ymin },\n high: { x: extent.xmax, y: extent.ymax },\n });\n\n const west = this.getEPSG4326Lon(range3857.xLow);\n const south = this.getEPSG4326Lat(range3857.yLow);\n const east = this.getEPSG4326Lon(range3857.xHigh);\n const north = this.getEPSG4326Lat(range3857.yHigh);\n this.cartoRange = MapCartoRectangle.fromDegrees(west, south, east, north);\n }\n\n protected async getLayerMetadata(layerId: number) {\n let metadata: ArcGISServiceMetadata | undefined;\n try {\n const url = new URL(this._settings.url);\n url.pathname = `${url.pathname}/${layerId}`;\n metadata = await ArcGisUtilities.getServiceJson(url.toString(), this._settings.formatId, this._settings.userName, this._settings.password, this._accessTokenRequired);\n } catch {\n\n }\n return metadata?.content;\n }\n\n public override get tileSize(): number { return 512; }\n public get format(): ArcGisFeatureFormat | undefined { return this._format; }\n\n // We don't use this method inside this provider (see constructFeatureUrl), but since this is an abstract method, we need to define something\n public async constructUrl(_row: number, _column: number, _zoomLevel: number): Promise<string> {\n return \"\";\n }\n\n public constructFeatureUrl(row: number, column: number, zoomLevel: number, format: ArcGisFeatureFormat, resultType: ArcGisFeatureResultType, geomOverride?: ArcGisGeometry, outFields?: string, tolerance?: number, returnGeometry?: boolean, maxAllowableOffset?: number): ArcGisFeatureUrl | undefined {\n\n const tileExtent = this.getEPSG3857Extent(row, column, zoomLevel);\n const tileEnvelope = {\n xmin: tileExtent.left, ymin: tileExtent.bottom,\n xmax: tileExtent.right, ymax: tileExtent.top,\n spatialReference: { wkid: 102100, latestWkid: 3857 },\n };\n\n // Actual spatial filter.\n // By default, we request the tile extent. If 'cartoPoint' is specified,\n // we restrict the spatial to specific point. (i.e. GetFeatureInfo requests)\n // If envelope is provided, it has the priority over 'cartoPoint'\n let geometry: ArcGisGeometry | undefined;\n if (geomOverride) {\n geometry = geomOverride;\n } else {\n geometry = { geom: tileEnvelope, type: \"esriGeometryEnvelope\" };\n }\n\n let quantizationParameters: FeatureQueryQuantizationParams | undefined;\n const toleranceWorld = (tileExtent.top - tileExtent.bottom) / this.tileSize;\n if (resultType === \"tile\" && this._supportsCoordinatesQuantization) {\n quantizationParameters = {\n mode: \"view\",\n originPosition: \"upperLeft\",\n tolerance: toleranceWorld, // pixel size in world units\n extent: tileEnvelope,\n };\n }\n const url = new ArcGisFeatureQuery(\n this._settings.url,\n this._layerId,\n format,\n this._outSR,\n {\n geometry,\n geometryType: \"esriGeometryEnvelope\",\n returnExceededLimitFeatures: false,\n maxRecordCountFactor: 3, // This was grabbed from the ESRI web viewer request, not sure where this factor come from\n resultType,\n quantizationParameters,\n outFields,\n returnGeometry,\n distance: (tolerance ? tolerance * toleranceWorld : undefined),\n maxAllowableOffset,\n });\n\n let envelope: ArcGisExtent | undefined;\n if (geomOverride && geomOverride.type === \"esriGeometryEnvelope\") {\n envelope = geomOverride.geom as ArcGisExtent;\n } else {\n envelope = tileEnvelope;\n }\n\n return { url: url.toString(), envelope };\n\n }\n\n // Makes an identify request to ESRI MapService , and return it as a list MapLayerFeatureInfo object\n public override async getFeatureInfo(featureInfos: MapLayerFeatureInfo[], quadId: QuadId, carto: Cartographic, _tree: ImageryMapTileTree, hit: HitDetail): Promise<void> {\n if (!this._querySupported || this.format === undefined)\n return;\n\n const epsg3857X = this.getEPSG3857X(carto.longitudeDegrees);\n const epsg3857Y = this.getEPSG3857Y(carto.latitudeDegrees);\n\n const tileExtent = this.getEPSG3857Extent(quadId.row, quadId.column, quadId.level);\n const tilePixelSize = (tileExtent.top - tileExtent.bottom) / this.tileSize;\n const tolerancePixel = 3;\n const toleranceWorld = tilePixelSize * tolerancePixel;\n\n // Note: We used to pass a single point as the query 'geometry' and leverage the 'distance' parameter, turns\n // out that approach was a lot slower on some server compared to using a single envelope.\n const queryEnvelope: ArcGisGeometry = {\n type: \"esriGeometryEnvelope\",\n geom: {\n xmin: epsg3857X - toleranceWorld, ymin: epsg3857Y - toleranceWorld,\n xmax: epsg3857X + toleranceWorld, ymax: epsg3857Y + toleranceWorld,\n spatialReference: { wkid: 102100, latestWkid: 3857 },\n }};\n\n const doFeatureInfoQuery = async (format: ArcGisFeatureFormat, outFields?: string, returnGeometry?: boolean,) => {\n const infoUrl = this.constructFeatureUrl(quadId.row, quadId.column, quadId.level, format, \"standard\", queryEnvelope,\n outFields, undefined, returnGeometry, toleranceWorld);\n\n if (!infoUrl || infoUrl.url.length === 0) {\n Logger.logError(loggerCategory, `Could not construct feature info query URL`);\n return undefined;\n }\n\n const response = this.fetch(new URL(infoUrl.url), { method: \"GET\" });\n\n const featureResponse = new ArcGisFeatureResponse(format, response);\n return featureResponse.getResponseData();\n };\n\n if (this._debugFeatureGeom) {\n try {\n let responseData = await doFeatureInfoQuery(\"PBF\", \"\", true);\n if (responseData) {\n Logger.logInfo(loggerCategory, JSON.stringify(responseData.data.toObject()));\n }\n responseData = await doFeatureInfoQuery(\"JSON\", \"\", true);\n if (responseData) {\n Logger.logInfo(loggerCategory, JSON.stringify(responseData.data));\n }\n } catch (e) {\n Logger.logInfo(loggerCategory, `Error occured with debug FeatureInfo: ${e}`);\n }\n }\n\n try {\n // Feature Info requests are always made in JSON for now.\n const responseData = await doFeatureInfoQuery(\"JSON\", \"*\", true);\n if (!responseData) {\n Logger.logError(loggerCategory, `Could not get feature info data`);\n return;\n }\n if (responseData.exceedTransferLimit) {\n Logger.logError(loggerCategory, `Could not get feature info : transfer limit exceeded.`);\n return;\n }\n\n const featureReader = new ArcGisJsonFeatureReader(this._settings, this._layerMetadata);\n\n const renderer = new ArcGisGraphicsRenderer(hit.iModel);\n await featureReader.readFeatureInfo(responseData, featureInfos, renderer);\n\n } catch (e) {\n Logger.logError(loggerCategory, `Exception occurred while loading feature info data : ${e}`);\n return;\n }\n\n return;\n }\n\n private async fetchTile(row: number, column: number, zoomLevel: number, refineEnvelope?: ArcGisExtent): Promise<ArcGisFeatureResponse | undefined> {\n if (!this.format) {\n return undefined;\n }\n\n const geomOverride: ArcGisGeometry | undefined = (refineEnvelope ? { geom: refineEnvelope, type: \"esriGeometryEnvelope\" } : undefined);\n const tileUrl = this.constructFeatureUrl(row, column, zoomLevel, this.format, \"tile\", geomOverride);\n if (!tileUrl || tileUrl.url.length === 0) {\n Logger.logError(loggerCategory, `Could not construct feature query URL for tile ${zoomLevel}/${row}/${column}`);\n return undefined;\n }\n\n const response = this.fetch(new URL(tileUrl.url), { method: \"GET\" });\n return new ArcGisFeatureResponse(this.format, response, tileUrl.envelope);\n }\n\n public drawTileDebugInfo(row: number, column: number, zoomLevel: number, context: CanvasRenderingContext2D) {\n context.fillStyle = \"cyan\";\n context.strokeRect(0, 0, this.tileSize, this.tileSize);\n context.font = \"30px Arial\";\n context.lineWidth = 5;\n context.fillText(`${zoomLevel}-${row}-${column}`, 10, 50);\n }\n\n // Compute transform that provides coordinates in the canvas coordinate system (pixels, origin = top-left)\n // from coordinate in world (i.e EPSG:3857)\n protected computeTileWorld2CanvasTransform(row: number, column: number, zoomLevel: number) {\n\n const tileExtentWorld3857 = this.getEPSG3857Extent(row, column, zoomLevel);\n const worldTileWidth = tileExtentWorld3857.right - tileExtentWorld3857.left;\n const canvasTileWidth = this.tileSize;\n const world2CanvasRatio = canvasTileWidth / worldTileWidth;\n const worldTileOrigin = Point3d.create(tileExtentWorld3857.left, tileExtentWorld3857.bottom);\n const worldTileExtent = Point3d.create(tileExtentWorld3857.right, tileExtentWorld3857.top);\n const canvasTileOriginOffset = worldTileOrigin.clone();\n const canvasTileExtentOffset = worldTileExtent.clone();\n canvasTileOriginOffset.scaleInPlace(world2CanvasRatio);\n canvasTileExtentOffset.scaleInPlace(world2CanvasRatio);\n const xTranslate = -1 * canvasTileOriginOffset.x;\n\n // Canvas origin is uppler left corner, so we need to flip the y axsis\n const yTranslate = canvasTileExtentOffset.y; // y-axis flip\n const yWorld2CanvasRatio = -1 * world2CanvasRatio; // y-axis flip\n\n const matrix = Matrix4d.createTranslationAndScaleXYZ(xTranslate, yTranslate, 0, world2CanvasRatio, yWorld2CanvasRatio, 1);\n return matrix.asTransform;\n }\n\n public override async loadTile(row: number, column: number, zoomLevel: number): Promise<ImageSource | undefined> {\n\n if ((this.status === MapLayerImageryProviderStatus.RequireAuth)) {\n return undefined;\n }\n const canvas = document.createElement(\"canvas\");\n canvas.width = this.tileSize;\n canvas.height = this.tileSize;\n\n const ctx = canvas.getContext(\"2d\");\n if (ctx == null) {\n Logger.logError(loggerCategory, \"No canvas context available for loading tile.\");\n return undefined;\n }\n\n if (!this._symbologyRenderer) {\n Logger.logError(loggerCategory, \"No symbology renderer available for loading tile.\");\n return undefined;\n }\n try {\n\n // Compute transform if CoordinatesQuantization is not supported by service\n let transfo: Transform | undefined;\n if (!this._supportsCoordinatesQuantization) {\n transfo = this.computeTileWorld2CanvasTransform(row, column, zoomLevel);\n if (!transfo) {\n Logger.logError(loggerCategory, `Could not compute data transformation for tile (${zoomLevel}/${row}/${column})`);\n }\n }\n\n const renderer = new ArcGisCanvasRenderer(ctx, this._symbologyRenderer, transfo);\n const featureReader: ArcGisFeatureReader = this.format === \"PBF\" ? new ArcGisPbfFeatureReader(this._settings, this._layerMetadata) : new ArcGisJsonFeatureReader(this._settings, this._layerMetadata);\n\n const getSubEnvelopes = (envelope: ArcGisExtent): ArcGisExtent[] => {\n const dx = (envelope.xmax - envelope.xmin) * 0.5;\n const dy = (envelope.xmax - envelope.xmin) * 0.5;\n const subEnvelopes: ArcGisExtent[] = [];\n for (let posX = 0; posX < ArcGisFeatureProvider._nbSubTiles; posX++) {\n for (let posY = 0; posY < ArcGisFeatureProvider._nbSubTiles; posY++) {\n subEnvelopes.push({\n xmin: envelope.xmin + (dx * posX), ymin: envelope.ymin + (dy * posY),\n xmax: envelope.xmin + (dx * (posX + 1)), ymax: envelope.ymin + (dy * (posY + 1)),\n spatialReference: { wkid: 102100, latestWkid: 3857 },\n });\n }\n }\n return subEnvelopes;\n };\n\n // The strategy here is simple: we make a request for an area that represents the current tile (i.e envelope),\n // the server will either return the requested data OR a 'exceedTransferLimit' message (too much data to transfers).\n // In the latter case, we subdivide the previous request envelope in for 4 sub-envelopes,\n // and repeat again until we get data.\n const renderData = async (envelope?: ArcGisExtent) => {\n let response: ArcGisFeatureResponse | undefined;\n let responseData: ArcGisResponseData | undefined;\n try {\n response = await this.fetchTile(row, column, zoomLevel, envelope);\n if (!response) {\n Logger.logError(loggerCategory, `Error occurred while fetching tile (${zoomLevel}/${row}/${column})`);\n return;\n }\n\n responseData = await response.getResponseData();\n if (!responseData) {\n Logger.logError(loggerCategory, `Could not get response data for tile (${zoomLevel}/${row}/${column})`);\n return;\n }\n } catch (e) {\n Logger.logError(loggerCategory, `Exception occurred while loading tile (${zoomLevel}/${row}/${column}) : ${e}`);\n return;\n }\n\n if (responseData.exceedTransferLimit) {\n if (response.envelope) {\n const subEnvelopes = getSubEnvelopes(response.envelope);\n const renderPromises = [];\n for (const subEnvelope of subEnvelopes) {\n renderPromises.push(renderData(subEnvelope));\n }\n await Promise.all(renderPromises);\n } else {\n Logger.logError(loggerCategory, `Request exceeded transfer limit, could not refine request`);\n }\n } else {\n await featureReader.readAndRender(responseData, renderer);\n }\n };\n await renderData();\n if (this._drawDebugInfo)\n this.drawTileDebugInfo(row, column, zoomLevel, ctx);\n } catch (e) {\n Logger.logError(loggerCategory, `Exception occurred while loading tile (${zoomLevel}/${row}/${column}) : ${e}`);\n }\n\n try {\n const dataUrl = canvas.toDataURL(\"image/png\");\n const header = \"data:image/png;base64,\";\n const dataUrl2 = dataUrl.substring(header.length);\n return new ImageSource(base64StringToUint8Array(dataUrl2), ImageSourceFormat.Png);\n } catch (e) {\n Logger.logError(loggerCategory, `Exception occurred while rendering tile (${zoomLevel}/${row}/${column}) : ${e}.`);\n }\n\n return undefined;\n }\n\n}\n\n"]}
@@ -62,6 +62,10 @@ export interface ArcGisFeatureQueryParams {
62
62
  maxRecordCountFactor?: number;
63
63
  returnExceededLimitFeatures?: boolean;
64
64
  quantizationParameters?: FeatureQueryQuantizationParams;
65
+ /** Maximum Allowable Offset means the map distance ( usually per pixel) within which two points are considered identical.
66
+ * It is used to generalize thus reduce the number of points
67
+ * */
68
+ maxAllowableOffset?: number;
65
69
  /** The list of fields to be included in the returned result set. This list is a comma-delimited list of field names.
66
70
  * You can also specify the wildcard "*" as the value of this parameter.
67
71
  * */
@@ -86,6 +90,7 @@ export declare class ArcGisFeatureQuery {
86
90
  outSR: number;
87
91
  outFields?: string;
88
92
  distance?: number;
93
+ maxAllowableOffset?: number;
89
94
  quantizationParams?: FeatureQueryQuantizationParams;
90
95
  constructor(baseUrl: string, layerIdx: number, format: ArcGisFeatureFormat, outSR: number, params?: ArcGisFeatureQueryParams);
91
96
  toString(): string;
@@ -1 +1 @@
1
- {"version":3,"file":"ArcGisFeatureQuery.d.ts","sourceRoot":"","sources":["../../../src/ArcGisFeature/ArcGisFeatureQuery.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ArcGisFeatureQuery.d.ts","sourceRoot":"","sources":["../../../src/ArcGisFeature/ArcGisFeatureQuery.ts"],"names":[],"mappings":"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"}
@@ -26,6 +26,7 @@ class ArcGisFeatureQuery {
26
26
  this.quantizationParams = params.quantizationParameters;
27
27
  this.outFields = params.outFields;
28
28
  this.distance = params.distance;
29
+ this.maxAllowableOffset = params.maxAllowableOffset;
29
30
  }
30
31
  }
31
32
  toString() {
@@ -76,6 +77,9 @@ class ArcGisFeatureQuery {
76
77
  if (this.distance) {
77
78
  url.searchParams.append("distance", `${this.distance}`);
78
79
  }
80
+ if (this.maxAllowableOffset) {
81
+ url.searchParams.append("maxAllowableOffset", `${this.maxAllowableOffset}`);
82
+ }
79
83
  return url.toString();
80
84
  }
81
85
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ArcGisFeatureQuery.js","sourceRoot":"","sources":["../../../src/ArcGisFeature/ArcGisFeatureQuery.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\n/** @internal */\r\nexport type ArcGisFeatureResultType = \"none\" | \"standard\" | \"tile\";\r\n\r\n/** @internal */\r\nexport type ArcGisFeatureGeometryType =\r\n \"esriGeometryNull\"\r\n | \"esriGeometryPoint\"\r\n | \"esriGeometryMultipoint\"\r\n | \"esriGeometryLine\"\r\n | \"esriGeometryCircularArc\"\r\n | \"esriGeometryEllipticArc\"\r\n | \"esriGeometryBezier3Curve\"\r\n | \"esriGeometryPath\"\r\n | \"esriGeometryPolyline\"\r\n | \"esriGeometryRing\"\r\n | \"esriGeometryPolygon\"\r\n | \"esriGeometryEnvelope\"\r\n | \"esriGeometryAny\"\r\n | \"esriGeometryBag\"\r\n | \"esriGeometryMultiPatch\"\r\n | \"esriGeometryTriangleStrip\"\r\n | \"esriGeometryTriangeFan\"\r\n | \"esriGeometryRay\"\r\n | \"esriGeometrySphere\"\r\n | \"esriGeometryTriangles\";\r\n\r\n/** @internal */\r\nexport type ArcGisFeatureSpatialRel = \"esriSpatialRelIntersects\" | \"esriSpatialRelContains\" | \"esriSpatialRelCrosses\" | \"esriSpatialRelEnvelopeIntersects\" | \"esriSpatialRelIndexIntersects\" | \"esriSpatialRelOverlaps\" | \"esriSpatialRelTouches\" | \"esriSpatialRelWithin\";\r\n\r\n/** @internal */\r\nexport interface ArcGisGeometry {\r\n type: ArcGisFeatureGeometryType;\r\n geom: ArcGisExtent | ArcGisPointGeometry;\r\n}\r\n\r\n/** @internal */\r\nexport interface ArcGisSpatialReference {\r\n wkid: number;\r\n latestWkid: number;\r\n}\r\n\r\n/** @internal */\r\nexport interface ArcGisExtent {\r\n xmin: number;\r\n xmax: number;\r\n ymin: number;\r\n ymax: number;\r\n spatialReference: ArcGisSpatialReference;\r\n}\r\n\r\n/** @internal */\r\nexport interface ArcGisPointGeometry {\r\n x: number;\r\n y: number;\r\n spatialReference: ArcGisSpatialReference;\r\n}\r\n\r\n/** @internal */\r\nexport interface FeatureQueryQuantizationParams {\r\n extent: ArcGisExtent;\r\n mode: \"view\" | \"edit\";\r\n originPosition: \"upperLeft\" | \"lowerLeft\";\r\n tolerance: number;\r\n}\r\n\r\n/** @internal */\r\nexport type ArcGisFeatureFormat = \"JSON\" | \"PBF\";\r\n\r\n// Based on official documentation:\r\n// https://developers.arcgis.com/rest/services-reference/query-feature-service-layer-.htm\r\n/** @internal */\r\nexport interface ArcGisFeatureQueryParams {\r\n\r\n /** This option can be used for fetching query results up to the resultRecordCount specified.\r\n * When resultOffset is specified but this parameter is not, the map service defaults it to maxRecordCount.\r\n * The maximum value for this parameter is the value of the layer's maxRecordCount property.\r\n * The minimum value entered for this parameter cannot be below 1.\r\n * This parameter only applies if supportsPagination is true.\r\n * */\r\n resultRecordCount?: number;\r\n\r\n /** This option can be used for fetching query results up to the resultRecordCount specified.\r\n * When resultOffset is specified but this parameter is not, the map service defaults it to maxRecordCount.\r\n * The maximum value for this parameter is the value of the layer's maxRecordCount property.\r\n * The minimum value entered for this parameter cannot be below 1.\r\n * This parameter only applies if supportsPagination is true.\r\n * */\r\n resultOffset?: number;\r\n\r\n /** If true, the result includes the geometry associated with each feature returned. */\r\n returnGeometry?: boolean;\r\n geometry?: ArcGisGeometry;\r\n geometryType?: ArcGisFeatureGeometryType;\r\n spatialRel?: ArcGisFeatureSpatialRel;\r\n resultType?: ArcGisFeatureResultType;\r\n maxRecordCountFactor?: number;\r\n returnExceededLimitFeatures?: boolean;\r\n quantizationParameters?: FeatureQueryQuantizationParams;\r\n\r\n /** The list of fields to be included in the returned result set. This list is a comma-delimited list of field names.\r\n * You can also specify the wildcard \"*\" as the value of this parameter.\r\n * */\r\n outFields?: string;\r\n\r\n /** The buffer distance for the input geometries.\r\n * */\r\n distance?: number;\r\n}\r\n\r\n/** @internal */\r\nexport class ArcGisFeatureQuery {\r\n public baseUrl: string;\r\n public layerIdx: number;\r\n public format: ArcGisFeatureFormat;\r\n public resultRecordCount?: number;\r\n public resultOffset?: number;\r\n public returnGeometry?: boolean;\r\n public geometry?: ArcGisGeometry;\r\n public spatialRel?: ArcGisFeatureSpatialRel;\r\n public resultType?: ArcGisFeatureResultType;\r\n public maxRecordCountFactor?: number;\r\n public returnExceededLimitFeatures?: boolean;\r\n public outSR: number;\r\n public outFields?: string;\r\n public distance?: number;\r\n\r\n // public envelopeFilter?: CartographicRange;\r\n public quantizationParams?: FeatureQueryQuantizationParams;\r\n\r\n // base url is expected ito be in the format of:\r\n // https://<hostname>/arcgis/rest/services/<ServiceName>/FeatureServer\r\n public constructor(baseUrl: string, layerIdx: number, format: ArcGisFeatureFormat, outSR: number, params?: ArcGisFeatureQueryParams) {\r\n this.baseUrl = baseUrl;\r\n this.layerIdx = layerIdx;\r\n this.format = format;\r\n this.outSR = outSR;\r\n\r\n if (params !== undefined) {\r\n this.resultRecordCount = params.resultRecordCount;\r\n this.resultOffset = params.resultOffset;\r\n this.returnGeometry = params.returnGeometry;\r\n this.geometry = params.geometry;\r\n this.spatialRel = params.spatialRel;\r\n this.resultType = params.resultType;\r\n this.maxRecordCountFactor = params.maxRecordCountFactor;\r\n this.returnExceededLimitFeatures = params.returnExceededLimitFeatures;\r\n this.quantizationParams = params.quantizationParameters;\r\n this.outFields = params.outFields;\r\n this.distance = params.distance;\r\n }\r\n\r\n }\r\n\r\n public toString() {\r\n const url = new URL(`${this.baseUrl}/${this.layerIdx}/query`);\r\n\r\n url.searchParams.append(\"f\", this.format);\r\n\r\n if ( this.resultRecordCount !== undefined) {\r\n url.searchParams.append(\"resultRecordCount\", `${this.resultRecordCount}`);\r\n }\r\n\r\n if ( this.resultOffset !== undefined) {\r\n url.searchParams.append( \"resultOffset\", `${this.resultOffset}`);\r\n }\r\n\r\n if ( this.returnGeometry !== undefined) {\r\n url.searchParams.append(\"returnGeometry\", this.returnGeometry?\"true\":\"false\");\r\n }\r\n\r\n if ( this.resultType !== undefined) {\r\n url.searchParams.append(\"resultType\", this.resultType);\r\n }\r\n\r\n if ( this.maxRecordCountFactor !== undefined) {\r\n url.searchParams.append( \"maxRecordCountFactor\", `${this.maxRecordCountFactor}`);\r\n }\r\n\r\n if ( this.returnExceededLimitFeatures !== undefined) {\r\n url.searchParams.append( \"returnExceededLimitFeatures\", this.returnExceededLimitFeatures?\"true\":\"false\");\r\n }\r\n\r\n url.searchParams.append( \"outSR\", `${this.outSR}`);\r\n\r\n if (this.geometry || this.spatialRel) {\r\n\r\n if (this.spatialRel) {\r\n url.searchParams.append( \"spatialRel\", this.spatialRel);\r\n }\r\n\r\n if (this.geometry) {\r\n url.searchParams.append( \"geometryType\", this.geometry.type);\r\n\r\n const geomStr = JSON.stringify(this.geometry.geom);\r\n url.searchParams.append( \"geometry\", geomStr);\r\n url.searchParams.append( \"units\", \"esriSRUnit_Meter\"); // required on older server for get feature info\r\n\r\n url.searchParams.append( \"inSR\", `${this.geometry.geom.spatialReference.wkid}`);\r\n }\r\n } else {\r\n // No custom params, fetch all geometries\r\n url.searchParams.append(\"where\", \"1=1\");\r\n }\r\n\r\n if (this.quantizationParams) {\r\n const quantizationParamsStr = JSON.stringify(this.quantizationParams);\r\n url.searchParams.append(\"quantizationParameters\", quantizationParamsStr);\r\n }\r\n\r\n if (this.outFields) {\r\n url.searchParams.append( \"outFields\", this.outFields);\r\n }\r\n\r\n if (this.distance) {\r\n url.searchParams.append(\"distance\", `${this.distance}`);\r\n }\r\n\r\n return url.toString();\r\n }\r\n\r\n}\r\n"]}
1
+ {"version":3,"file":"ArcGisFeatureQuery.js","sourceRoot":"","sources":["../../../src/ArcGisFeature/ArcGisFeatureQuery.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;;;AAoH/F,gBAAgB;AAChB,MAAa,kBAAkB;IAoB7B,gDAAgD;IAChD,sEAAsE;IACtE,YAAmB,OAAe,EAAE,QAAgB,EAAE,MAA2B,EAAE,KAAa,EAAE,MAAiC;QACjI,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QAEnB,IAAI,MAAM,KAAK,SAAS,EAAE;YACxB,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC;YAClD,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;YACxC,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;YAC5C,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;YAChC,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;YACpC,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;YACpC,IAAI,CAAC,oBAAoB,GAAG,MAAM,CAAC,oBAAoB,CAAC;YACxD,IAAI,CAAC,2BAA2B,GAAG,MAAM,CAAC,2BAA2B,CAAC;YACtE,IAAI,CAAC,kBAAkB,GAAG,MAAM,CAAC,sBAAsB,CAAC;YACxD,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;YAClC,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;YAChC,IAAI,CAAC,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,CAAC;SACrD;IAEH,CAAC;IAEM,QAAQ;QACb,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,QAAQ,CAAC,CAAC;QAE9D,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAE1C,IAAK,IAAI,CAAC,iBAAiB,KAAK,SAAS,EAAE;YACzC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,mBAAmB,EAAE,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;SAC3E;QAED,IAAK,IAAI,CAAC,YAAY,KAAK,SAAS,EAAE;YACpC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAE,cAAc,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;SAClE;QAED,IAAK,IAAI,CAAC,cAAc,KAAK,SAAS,EAAE;YACtC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,gBAAgB,EAAE,IAAI,CAAC,cAAc,CAAA,CAAC,CAAA,MAAM,CAAA,CAAC,CAAA,OAAO,CAAC,CAAC;SAC/E;QAED,IAAK,IAAI,CAAC,UAAU,KAAK,SAAS,EAAE;YAClC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;SACxD;QAED,IAAK,IAAI,CAAC,oBAAoB,KAAK,SAAS,EAAE;YAC5C,GAAG,CAAC,YAAY,CAAC,MAAM,CAAE,sBAAsB,EAAE,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC;SAClF;QAED,IAAK,IAAI,CAAC,2BAA2B,KAAK,SAAS,EAAE;YACnD,GAAG,CAAC,YAAY,CAAC,MAAM,CAAE,6BAA6B,EAAE,IAAI,CAAC,2BAA2B,CAAA,CAAC,CAAA,MAAM,CAAA,CAAC,CAAA,OAAO,CAAC,CAAC;SAC1G;QAED,GAAG,CAAC,YAAY,CAAC,MAAM,CAAE,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAEnD,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE;YAEpC,IAAI,IAAI,CAAC,UAAU,EAAE;gBACnB,GAAG,CAAC,YAAY,CAAC,MAAM,CAAE,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;aACzD;YAED,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACjB,GAAG,CAAC,YAAY,CAAC,MAAM,CAAE,cAAc,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBAE7D,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBACnD,GAAG,CAAC,YAAY,CAAC,MAAM,CAAE,UAAU,EAAE,OAAO,CAAC,CAAC;gBAC9C,GAAG,CAAC,YAAY,CAAC,MAAM,CAAE,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAI,gDAAgD;gBAE1G,GAAG,CAAC,YAAY,CAAC,MAAM,CAAE,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC,CAAC;aACjF;SACF;aAAM;YACL,yCAAyC;YACzC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;SACzC;QAED,IAAI,IAAI,CAAC,kBAAkB,EAAE;YAC3B,MAAM,qBAAqB,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YACtE,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,wBAAwB,EAAE,qBAAqB,CAAC,CAAC;SAC1E;QAED,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,GAAG,CAAC,YAAY,CAAC,MAAM,CAAE,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;SACvD;QAED,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;SACzD;QAED,IAAI,IAAI,CAAC,kBAAkB,EAAE;YAC3B,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,oBAAoB,EAAE,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC;SAC7E;QAED,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC;IACxB,CAAC;CAEF;AApHD,gDAoHC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\n/** @internal */\nexport type ArcGisFeatureResultType = \"none\" | \"standard\" | \"tile\";\n\n/** @internal */\nexport type ArcGisFeatureGeometryType =\n \"esriGeometryNull\"\n | \"esriGeometryPoint\"\n | \"esriGeometryMultipoint\"\n | \"esriGeometryLine\"\n | \"esriGeometryCircularArc\"\n | \"esriGeometryEllipticArc\"\n | \"esriGeometryBezier3Curve\"\n | \"esriGeometryPath\"\n | \"esriGeometryPolyline\"\n | \"esriGeometryRing\"\n | \"esriGeometryPolygon\"\n | \"esriGeometryEnvelope\"\n | \"esriGeometryAny\"\n | \"esriGeometryBag\"\n | \"esriGeometryMultiPatch\"\n | \"esriGeometryTriangleStrip\"\n | \"esriGeometryTriangeFan\"\n | \"esriGeometryRay\"\n | \"esriGeometrySphere\"\n | \"esriGeometryTriangles\";\n\n/** @internal */\nexport type ArcGisFeatureSpatialRel = \"esriSpatialRelIntersects\" | \"esriSpatialRelContains\" | \"esriSpatialRelCrosses\" | \"esriSpatialRelEnvelopeIntersects\" | \"esriSpatialRelIndexIntersects\" | \"esriSpatialRelOverlaps\" | \"esriSpatialRelTouches\" | \"esriSpatialRelWithin\";\n\n/** @internal */\nexport interface ArcGisGeometry {\n type: ArcGisFeatureGeometryType;\n geom: ArcGisExtent | ArcGisPointGeometry;\n}\n\n/** @internal */\nexport interface ArcGisSpatialReference {\n wkid: number;\n latestWkid: number;\n}\n\n/** @internal */\nexport interface ArcGisExtent {\n xmin: number;\n xmax: number;\n ymin: number;\n ymax: number;\n spatialReference: ArcGisSpatialReference;\n}\n\n/** @internal */\nexport interface ArcGisPointGeometry {\n x: number;\n y: number;\n spatialReference: ArcGisSpatialReference;\n}\n\n/** @internal */\nexport interface FeatureQueryQuantizationParams {\n extent: ArcGisExtent;\n mode: \"view\" | \"edit\";\n originPosition: \"upperLeft\" | \"lowerLeft\";\n tolerance: number;\n}\n\n/** @internal */\nexport type ArcGisFeatureFormat = \"JSON\" | \"PBF\";\n\n// Based on official documentation:\n// https://developers.arcgis.com/rest/services-reference/query-feature-service-layer-.htm\n/** @internal */\nexport interface ArcGisFeatureQueryParams {\n\n /** This option can be used for fetching query results up to the resultRecordCount specified.\n * When resultOffset is specified but this parameter is not, the map service defaults it to maxRecordCount.\n * The maximum value for this parameter is the value of the layer's maxRecordCount property.\n * The minimum value entered for this parameter cannot be below 1.\n * This parameter only applies if supportsPagination is true.\n * */\n resultRecordCount?: number;\n\n /** This option can be used for fetching query results up to the resultRecordCount specified.\n * When resultOffset is specified but this parameter is not, the map service defaults it to maxRecordCount.\n * The maximum value for this parameter is the value of the layer's maxRecordCount property.\n * The minimum value entered for this parameter cannot be below 1.\n * This parameter only applies if supportsPagination is true.\n * */\n resultOffset?: number;\n\n /** If true, the result includes the geometry associated with each feature returned. */\n returnGeometry?: boolean;\n geometry?: ArcGisGeometry;\n geometryType?: ArcGisFeatureGeometryType;\n spatialRel?: ArcGisFeatureSpatialRel;\n resultType?: ArcGisFeatureResultType;\n maxRecordCountFactor?: number;\n returnExceededLimitFeatures?: boolean;\n quantizationParameters?: FeatureQueryQuantizationParams;\n\n /** Maximum Allowable Offset means the map distance ( usually per pixel) within which two points are considered identical.\n * It is used to generalize thus reduce the number of points\n* */\n maxAllowableOffset?: number;\n\n /** The list of fields to be included in the returned result set. This list is a comma-delimited list of field names.\n * You can also specify the wildcard \"*\" as the value of this parameter.\n * */\n outFields?: string;\n\n /** The buffer distance for the input geometries.\n * */\n distance?: number;\n}\n\n/** @internal */\nexport class ArcGisFeatureQuery {\n public baseUrl: string;\n public layerIdx: number;\n public format: ArcGisFeatureFormat;\n public resultRecordCount?: number;\n public resultOffset?: number;\n public returnGeometry?: boolean;\n public geometry?: ArcGisGeometry;\n public spatialRel?: ArcGisFeatureSpatialRel;\n public resultType?: ArcGisFeatureResultType;\n public maxRecordCountFactor?: number;\n public returnExceededLimitFeatures?: boolean;\n public outSR: number;\n public outFields?: string;\n public distance?: number;\n public maxAllowableOffset?: number;\n\n // public envelopeFilter?: CartographicRange;\n public quantizationParams?: FeatureQueryQuantizationParams;\n\n // base url is expected ito be in the format of:\n // https://<hostname>/arcgis/rest/services/<ServiceName>/FeatureServer\n public constructor(baseUrl: string, layerIdx: number, format: ArcGisFeatureFormat, outSR: number, params?: ArcGisFeatureQueryParams) {\n this.baseUrl = baseUrl;\n this.layerIdx = layerIdx;\n this.format = format;\n this.outSR = outSR;\n\n if (params !== undefined) {\n this.resultRecordCount = params.resultRecordCount;\n this.resultOffset = params.resultOffset;\n this.returnGeometry = params.returnGeometry;\n this.geometry = params.geometry;\n this.spatialRel = params.spatialRel;\n this.resultType = params.resultType;\n this.maxRecordCountFactor = params.maxRecordCountFactor;\n this.returnExceededLimitFeatures = params.returnExceededLimitFeatures;\n this.quantizationParams = params.quantizationParameters;\n this.outFields = params.outFields;\n this.distance = params.distance;\n this.maxAllowableOffset = params.maxAllowableOffset;\n }\n\n }\n\n public toString() {\n const url = new URL(`${this.baseUrl}/${this.layerIdx}/query`);\n\n url.searchParams.append(\"f\", this.format);\n\n if ( this.resultRecordCount !== undefined) {\n url.searchParams.append(\"resultRecordCount\", `${this.resultRecordCount}`);\n }\n\n if ( this.resultOffset !== undefined) {\n url.searchParams.append( \"resultOffset\", `${this.resultOffset}`);\n }\n\n if ( this.returnGeometry !== undefined) {\n url.searchParams.append(\"returnGeometry\", this.returnGeometry?\"true\":\"false\");\n }\n\n if ( this.resultType !== undefined) {\n url.searchParams.append(\"resultType\", this.resultType);\n }\n\n if ( this.maxRecordCountFactor !== undefined) {\n url.searchParams.append( \"maxRecordCountFactor\", `${this.maxRecordCountFactor}`);\n }\n\n if ( this.returnExceededLimitFeatures !== undefined) {\n url.searchParams.append( \"returnExceededLimitFeatures\", this.returnExceededLimitFeatures?\"true\":\"false\");\n }\n\n url.searchParams.append( \"outSR\", `${this.outSR}`);\n\n if (this.geometry || this.spatialRel) {\n\n if (this.spatialRel) {\n url.searchParams.append( \"spatialRel\", this.spatialRel);\n }\n\n if (this.geometry) {\n url.searchParams.append( \"geometryType\", this.geometry.type);\n\n const geomStr = JSON.stringify(this.geometry.geom);\n url.searchParams.append( \"geometry\", geomStr);\n url.searchParams.append( \"units\", \"esriSRUnit_Meter\"); // required on older server for get feature info\n\n url.searchParams.append( \"inSR\", `${this.geometry.geom.spatialReference.wkid}`);\n }\n } else {\n // No custom params, fetch all geometries\n url.searchParams.append(\"where\", \"1=1\");\n }\n\n if (this.quantizationParams) {\n const quantizationParamsStr = JSON.stringify(this.quantizationParams);\n url.searchParams.append(\"quantizationParameters\", quantizationParamsStr);\n }\n\n if (this.outFields) {\n url.searchParams.append( \"outFields\", this.outFields);\n }\n\n if (this.distance) {\n url.searchParams.append(\"distance\", `${this.distance}`);\n }\n\n if (this.maxAllowableOffset) {\n url.searchParams.append(\"maxAllowableOffset\", `${this.maxAllowableOffset}`);\n }\n\n return url.toString();\n }\n\n}\n"]}