You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
20 lines
8.4 KiB
20 lines
8.4 KiB
// All material copyright Esri, All Rights Reserved, unless otherwise specified. |
|
// See https://js.arcgis.com/4.30/esri/copyright.txt for details. |
|
//>>built |
|
define("exports ../../geometry ../../request ../../core/Error ../../core/Logger ../../core/urlUtils ../../geometry/support/spatialReferenceUtils ../../geometry/support/webMercatorUtils ../graphics/featureConversionUtils ../graphics/OptimizedFeatureSet ../graphics/sources/geojson/geojson ../graphics/sources/support/clientSideDefaults ../graphics/sources/support/sourceUtils ../support/FieldsIndex ../support/fieldType ../../time/timeZoneUtils ../../geometry/SpatialReference".split(" "),function(n,ka, |
|
y,t,V,u,W,N,J,X,K,Y,Z,O,aa,ba,z){async function P(b,a,c){const {collection:{links:f,landingPage:{url:d}},layerDefinition:m,maxRecordCount:p,queryParameters:{apiKey:C,customParameters:l},spatialReference:D,supportedCrs:v}=b;var g=q(f,"items",h.geojson)||q(f,"http://www.opengis.net/def/rel/ogc/1.0/items",h.geojson);if(null==g)throw new t("ogc-feature-layer:missing-items-page","Missing items url");const {geometry:e,num:A,start:x,timeExtent:Q,where:G}=a;if(a.objectIds)throw new t("ogc-feature-layer:query-by-objectids-not-supported", |
|
"Queries with object ids are not supported");b=z.fromJSON(D);a=a.outSpatialReference??b;b=a.isWGS84?null:R(a,v);if(null==e||"extent"!==e.type)var k=null;else if({spatialReference:k}=e,!k||k.isWGS84)k={bbox:L(e)};else{var w=R(k,v);k=null!=w?{bbox:L(e),"bbox-crs":w}:k.isWebMercator?{bbox:L(N.project(e,z.WGS84))}:null}w=k;if(null==Q)k=null;else{var {start:S,end:T}=Q;k=`${null!=S?S.toISOString():".."}/${null!=T?T.toISOString():".."}`}const ca=k;var da=null!=G&&G&&"1\x3d1"!==G?G:null;k=A??(null==x?p:10); |
|
const ea=0===x?void 0:x,{fields:U,geometryType:H,hasZ:M,objectIdField:E,paginationParameter:fa}=m;g=u.makeAbsolute(g.href,d);({data:g}=await y(g,{...c,query:{...l,...w,crs:b,datetime:ca,query:da,limit:k,[fa]:ea,token:C},headers:{accept:h.geojson}}));c=K.createOptimizedFeatures(g,{geometryType:H,hasZ:M,objectIdField:E});g=c.length===k&&!!q(g.links??[],"next",h.geojson);k=new O(U);for(var B of c)w={},Z.mixAttributes(k,w,B.attributes),w[E]=B.attributes[E],B.attributes=w;if(!b&&a.isWebMercator)for(var F of c)null!= |
|
F.geometry&&null!=H&&(B=J.convertToGeometry(F.geometry,H,M,!1),B.spatialReference=z.WGS84,F.geometry=J.convertFromGeometry(N.project(B,a)));for(var r of c)r.objectId=r.attributes[E];F=b||!b&&a.isWebMercator?a.toJSON():W.wgs84;r=new X;r.exceededTransferLimit=g;r.features=c;r.fields=U;r.geometryType=H;r.hasZ=M;r.objectIdFieldName=E;r.spatialReference=F;return r}function R(b,a){const {isWebMercator:c,wkid:f}=b;return f?(b=c?a[3857]??a[102100]??a[102113]??a[900913]:a[b.wkid])?`${"http://www.opengis.net/def/crs/"}${b}`: |
|
null:null}function L(b){if(null==b)return"";const {xmin:a,ymin:c,xmax:f,ymax:d}=b;return`${a},${c},${f},${d}`}function ha(b){b=b.extent?.spatial;if(!b)return null;var a=b.bbox[0],c=4===a.length;const [f,d]=a;b=c?void 0:a[2];const m=c?a[2]:a[3],p=c?a[3]:a[4];a=c?void 0:a[5];c=z.WGS84.toJSON();return{xmin:f,ymin:d,xmax:m,ymax:p,zmin:b,zmax:a,spatialReference:c}}function q(b,a,c){return b.find(({rel:f,type:d})=>f===a&&d===c)??b.find(({rel:f,type:d})=>f===a&&!d)}function ia(b,a,c){if(c&&(c=q(c,"next", |
|
h.geojson),c=u.urlToObject(c?.href)?.query)){b=u.urlToObject(b).query;var f=Object.keys(b??{});return Object.entries(c).filter(([d])=>!f.includes(d)).find(([d,m])=>ja.has(d.toLowerCase())&&Number.parseInt(m,10)===a)?.[0]}}const I=()=>V.getLogger("esri.layers.ogc.ogcFeatureUtils"),ja=new Set(["startindex","offset"]);var h;(function(b){b.json="application/json";b.geojson="application/geo+json";b.openapi="application/vnd.oai.openapi+json;version\x3d3.0"})(h||={});n.crsDefault="http://www.opengis.net/def/crs/OGC/1.3/CRS84"; |
|
n.crsPrefix="http://www.opengis.net/def/crs/";n.getCollectionDefinition=async function(b,a,c={},f=5){var {links:d}=b;d=q(d,"items",h.geojson)||q(d,"http://www.opengis.net/def/rel/ogc/1.0/items",h.geojson);if(null==d)throw new t("ogc-feature-layer:missing-items-page","Missing items url");const {apiKey:m,customParameters:p,signal:C}=c;c=u.makeAbsolute(d.href,b.landingPage.url);d=u.addQueryParameters(c,{limit:f,...p,token:m});({data:c}=await y(d,{signal:C,headers:{accept:h.geojson}}));f=ia(d,f,c.links)?? |
|
"startindex";K.validateGeoJSON(c);const l=K.inferLayerProperties(c,{geometryType:a.geometryType});c=a.fields||l.fields||[];d=null!=a.hasZ?a.hasZ:l.hasZ;const D=l.geometryType,v=a.objectIdField||l.objectIdFieldName||"OBJECTID";a=a.timeInfo;var g=c.find(({name:x})=>x===v);if(g)g.editable=!1,g.nullable=!1;else{if(!l.objectIdFieldType)throw new t("ogc-feature-layer:missing-feature-id","Collection geojson require a feature id as a unique identifier");c.unshift({name:v,alias:v,type:"number"===l.objectIdFieldType? |
|
"esriFieldTypeOID":"esriFieldTypeString",editable:!1,nullable:!1})}v!==l.objectIdFieldName&&(g=c.find(({name:x})=>x===l.objectIdFieldName))&&(g.type="esriFieldTypeInteger");c===l.fields&&0<l.unknownFields.length&&I().warn({name:"ogc-feature-layer:unknown-field-types",message:"Some fields types couldn't be inferred from the features and were dropped",details:{unknownFields:l.unknownFields}});for(var e of c){null==e.name&&(e.name=e.alias);null==e.alias&&(e.alias=e.name);"esriFieldTypeOID"!==e.type&& |
|
"esriFieldTypeGlobalID"!==e.type&&(e.editable=null==e.editable||!!e.editable,e.nullable=null==e.nullable||!!e.nullable);if(!e.name)throw new t("ogc-feature-layer:invalid-field-name","field name is missing",{field:e});if(!aa.kebabDict.jsonValues.includes(e.type))throw new t("ogc-feature-layer:invalid-field-type",`invalid type for field "${e.name}"`,{field:e});}if(a){e=new O(c);a.startTimeField&&((g=e.get(a.startTimeField))?(a.startTimeField=g.name,g.type="esriFieldTypeDate"):a.startTimeField=null); |
|
a.endTimeField&&((g=e.get(a.endTimeField))?(a.endTimeField=g.name,g.type="esriFieldTypeDate"):a.endTimeField=null);a.trackIdField&&((e=e.get(a.trackIdField))?a.trackIdField=e.name:(a.trackIdField=null,I().warn({name:"ogc-feature-layer:invalid-timeInfo-trackIdField",message:"trackIdField is missing",details:{timeInfo:a}})));var A;(A=a).timeReference||(A.timeReference={timeZoneIANA:ba.utc});a.startTimeField||a.endTimeField||(I().warn({name:"ogc-feature-layer:invalid-timeInfo",message:"startTimeField and endTimeField are missing", |
|
details:{timeInfo:a}}),a=void 0)}A=D?Y.createDrawingInfo(D):null;b=ha(b);return{drawingInfo:A,extent:b,geometryType:D,fields:c,hasZ:!!d,objectIdField:v,paginationParameter:f,timeInfo:a}};n.getServerCollections=async function(b,a={}){const {links:c,url:f}=b,d=q(c,"data",h.json)||q(c,"http://www.opengis.net/def/rel/ogc/1.0/data",h.json);if(null==d)throw new t("ogc-feature-layer:missing-collections-page","Missing collections url");const {apiKey:m,customParameters:p,signal:C}=a;a=u.makeAbsolute(d.href, |
|
f);({data:a}=await y(a,{signal:C,headers:{accept:h.json},query:{...p,token:m}}));for(const l of a.collections)l.landingPage=b;return a};n.getServerConformance=async function(b,a={}){const {links:c,url:f}=b;b=q(c,"conformance",h.json)||q(c,"http://www.opengis.net/def/rel/ogc/1.0/conformance",h.json);if(null==b)throw new t("ogc-feature-layer:missing-conformance-page","Missing conformance url");const {apiKey:d,customParameters:m,signal:p}=a;a=u.makeAbsolute(b.href,f);({data:a}=await y(a,{signal:p,headers:{accept:h.json}, |
|
query:{...m,token:d}}));return a};n.getServerLandingPage=async function(b,a={}){const {apiKey:c,customParameters:f,signal:d}=a;({data:a}=await y(b,{signal:d,headers:{accept:h.json},query:{...f,token:c}}));a.url=b;return a};n.getServerOpenApi=async function(b,a={}){const {links:c,url:f}=b;b=q(c,"service-desc",h.openapi);if(null==b)return I().warn("ogc-feature-layer:missing-openapi-page","The OGC API-Features server does not have an OpenAPI page."),null;const {apiKey:d,customParameters:m,signal:p}= |
|
a;a=u.makeAbsolute(b.href,f);({data:a}=await y(a,{signal:p,headers:{accept:h.openapi},query:{...m,token:d}}));return a};n.getSpatialReferenceWkid=function(b){b=/^http:\/\/www\.opengis.net\/def\/crs\/(?<authority>.*)\/(?<version>.*)\/(?<code>.*)$/i.exec(b)?.groups;if(!b)return null;const {authority:a,code:c}=b;switch(a.toLowerCase()){case "ogc":switch(c.toLowerCase()){case "crs27":return z.GCS_NAD_1927.wkid;case "crs83":return 4269;case "crs84":case "crs84h":return z.WGS84.wkid;default:return null}case "esri":case "epsg":return b= |
|
Number.parseInt(c,10),Number.isNaN(b)?null:b;default:return null}};n.queryFeatureSetJSON=async function(b,a,c){b=await P(b,a,c);return J.convertToFeatureSet(b)};n.queryOptimizedFeatureSet=P;Object.defineProperty(n,Symbol.toStringTag,{value:"Module"})}); |