@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
6 lines (5 loc) • 2.22 kB
JavaScript
/*
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
See https://js.arcgis.com/4.32/esri/copyright.txt for details.
*/
import e from"../../core/Error.js";import{JSONMap as t}from"../../core/jsonMap.js";import o from"../../geometry/SpatialReference.js";import{inferLocationInfo as r}from"./locationUtils.js";import{ParquetMetadata as i}from"../../libs/parquet/parquet.js";const n=new t({esriGeometryPoint:"point",esriGeometryPolygon:"polygon",esriGeometryPolyline:"polyline",esriGeometryMultipoint:"multipoint"});function l(e){return n.toJSON(e)}function a(e){return"location"===e.type?{type:"location",geometryType:"esriGeometryPoint",spatialReference:"toJSON"in e.spatialReference?e.spatialReference.toJSON():e.spatialReference,latitudeFieldName:e.latitudeFieldName,longitudeFieldName:e.longitudeFieldName}:{type:"geometry",geometryType:l(e.geometryType),spatialReference:e.spatialReference.toJSON(),format:e.format,primaryFieldName:e.primaryFieldName,multiscale:e.multiscale??null}}async function m(e){const t=await i.create(e,(()=>null));return{objectIdField:null,url:e,geometrySourceInfo:s(t),metadata:t}}function u(e){switch(e){case"Point":return"point";case"Polygon":case"MultiPolygon":return"polygon";case"LineString":return"polyline";case"MultiPoint":return"multipoint";default:return null}}function s(t){const i=t.tryReadEsriMetadata()?.multiscale,n=t.tryReadGeoMetadata();if(null!=n){const t=n.primary_column,r=n.columns[t],{geometry_types:l,encoding:a,orientation:m,crs:s}=r,p=new Set;for(const e of l){const t=u(e);t&&p.add(t)}if(p.size>1)throw new e("unsupported","Parquet mixed geometry types are not support",{geometryTypes:p});const c=1===p.size?p.values().next().value:null,y=s?.id?.code;return{type:"geometry",format:a,geometryType:c,orientation:m??null,primaryFieldName:t,spatialReference:y&&"number"==typeof y?new o({wkid:y}):null,multiscale:i}}const l=r(t.fields.map((e=>e.name)));return{type:"location",latitudeFieldName:l.latitudeFieldName,longitudeFieldName:l.longitudeFieldName,spatialReference:o.WGS84}}export{s as inferGeometrySource,m as inferParquetLoadOptions,n as parquetGeometryTypeKebabDict,a as toParquetGeometryInfoJSON,l as toParquetJSONGeometryType};