xm-netcdf-loader 1.0.2 → 1.0.3
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.
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var It=Object.defineProperty;var vt=(e,l,n)=>l in e?It(e,l,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[l]=n;var L=(e,l,n)=>vt(e,typeof l!="symbol"?l+"":l,n);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const I=require("vue"),Et=require("@earthyscience/netcdf4-wasm");var gn=typeof document<"u"?document.currentScript:null;function Ct(e){const l=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const n in e)if(n!=="default"){const t=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(l,n,t.get?t:{enumerable:!0,get:()=>e[n]})}}return l.default=e,Object.freeze(l)}const Mt=Ct(Et),Ol=[[.267004,.004874,.329415],[.26851,.009605,.335427],[.269944,.014625,.341379],[.271305,.019942,.347269],[.272594,.025563,.353093],[.273809,.031497,.358853],[.274952,.037752,.364543],[.276022,.044167,.370164],[.277018,.050344,.375715],[.277941,.056324,.381191],[.278791,.062145,.386592],[.279566,.067836,.391917],[.280267,.073417,.397163],[.280894,.078907,.402329],[.281446,.08432,.407414],[.281924,.089666,.412415],[.282327,.094955,.417331],[.282656,.100196,.42216],[.28291,.105393,.426902],[.283091,.110553,.431554],[.283197,.11568,.436115],[.283229,.120777,.440584],[.283187,.125848,.44496],[.283072,.130895,.449241],[.282884,.13592,.453427],[.282623,.140926,.457517],[.28229,.145912,.46151],[.281887,.150881,.465405],[.281412,.155834,.469201],[.280868,.160771,.472899],[.280255,.165693,.476498],[.279574,.170599,.479997],[.278826,.17549,.483397],[.278012,.180367,.486697],[.277134,.185228,.489898],[.276194,.190074,.493001],[.275191,.194905,.496005],[.274128,.199721,.498911],[.273006,.20452,.501721],[.271828,.209303,.504434],[.270595,.214069,.507052],[.269308,.218818,.509577],[.267968,.223549,.512008],[.26658,.228262,.514349],[.265145,.232956,.516599],[.263663,.237631,.518762],[.262138,.242286,.520837],[.260571,.246922,.522828],[.258965,.251537,.524736],[.257322,.25613,.526563],[.255645,.260703,.528312],[.253935,.265254,.529983],[.252194,.269783,.531579],[.250425,.27429,.533103],[.248629,.278775,.534556],[.246811,.283237,.535941],[.244972,.287675,.53726],[.243113,.292092,.538516],[.241237,.296485,.539709],[.239346,.300855,.540844],[.237441,.305202,.541921],[.235526,.309527,.542944],[.233603,.313828,.543914],[.231674,.318106,.544834],[.229739,.322361,.545706],[.227802,.326594,.546532],[.225863,.330805,.547314],[.223925,.334994,.548053],[.221989,.339161,.548752],[.220057,.343307,.549413],[.21813,.347432,.550038],[.21621,.351535,.550627],[.214298,.355619,.551184],[.212395,.359683,.55171],[.210503,.363727,.552206],[.208623,.367752,.552675],[.206756,.371758,.553117],[.204903,.375746,.553533],[.203063,.379716,.553925],[.201239,.38367,.554294],[.19943,.387607,.554642],[.197636,.391528,.554969],[.19586,.395433,.555276],[.1941,.399323,.555565],[.192357,.403199,.555836],[.190631,.407061,.556089],[.188923,.41091,.556326],[.187231,.414746,.556547],[.185556,.41857,.556753],[.183898,.422383,.556944],[.182256,.426184,.55712],[.180629,.429975,.557282],[.179019,.433756,.55743],[.177423,.437527,.557565],[.175841,.44129,.557685],[.174274,.445044,.557792],[.172719,.448791,.557885],[.171176,.45253,.557965],[.169646,.456262,.55803],[.168126,.459988,.558082],[.166617,.463708,.558119],[.165117,.467423,.558141],[.163625,.471133,.558148],[.162142,.474838,.55814],[.160665,.47854,.558115],[.159194,.482237,.558073],[.157729,.485932,.558013],[.15627,.489624,.557936],[.154815,.493313,.55784],[.153364,.497,.557724],[.151918,.500685,.557587],[.150476,.504369,.55743],[.149039,.508051,.55725],[.147607,.511733,.557049],[.14618,.515413,.556823],[.144759,.519093,.556572],[.143343,.522773,.556295],[.141935,.526453,.555991],[.140536,.530132,.555659],[.139147,.533812,.555298],[.13777,.537492,.554906],[.136408,.541173,.554483],[.135066,.544853,.554029],[.133743,.548535,.553541],[.132444,.552216,.553018],[.131172,.555899,.552459],[.129933,.559582,.551864],[.128729,.563265,.551229],[.127568,.566949,.550556],[.126453,.570633,.549841],[.125394,.574318,.549086],[.124395,.578002,.548287],[.123463,.581687,.547445],[.122606,.585371,.546557],[.121831,.589055,.545623],[.121148,.592739,.544641],[.120565,.596422,.543611],[.120092,.600104,.54253],[.119738,.603785,.5414],[.119512,.607464,.540218],[.119423,.611141,.538982],[.119483,.614817,.537692],[.119699,.61849,.536347],[.120081,.622161,.534946],[.120638,.625828,.533488],[.12138,.629492,.531973],[.122312,.633153,.530398],[.123444,.636809,.528763],[.12478,.640461,.527068],[.126326,.644107,.525311],[.128087,.647749,.523491],[.130067,.651384,.521608],[.132268,.655014,.519661],[.134692,.658636,.517649],[.137339,.662252,.515571],[.14021,.665859,.513427],[.143303,.669459,.511215],[.146616,.67305,.508936],[.150148,.676631,.506589],[.153894,.680203,.504172],[.157851,.683765,.501686],[.162016,.687316,.499129],[.166383,.690856,.496502],[.170948,.694384,.493803],[.175707,.6979,.491033],[.180653,.701402,.488189],[.185783,.704891,.485273],[.19109,.708366,.482284],[.196571,.711827,.479221],[.202219,.715272,.476084],[.20803,.718701,.472873],[.214,.722114,.469588],[.220124,.725509,.466226],[.226397,.728888,.462789],[.232815,.732247,.459277],[.239374,.735588,.455688],[.24607,.73891,.452024],[.252899,.742211,.448284],[.259857,.745492,.444467],[.266941,.748751,.440573],[.274149,.751988,.436601],[.281477,.755203,.432552],[.288921,.758394,.428426],[.296479,.761561,.424223],[.304148,.764704,.419943],[.311925,.767822,.415586],[.319809,.770914,.411152],[.327796,.77398,.40664],[.335885,.777018,.402049],[.344074,.780029,.397381],[.35236,.783011,.392636],[.360741,.785964,.387814],[.369214,.788888,.382914],[.377779,.791781,.377939],[.386433,.794644,.372886],[.395174,.797475,.367757],[.404001,.800275,.362552],[.412913,.803041,.357269],[.421908,.805774,.35191],[.430983,.808473,.346476],[.440137,.811138,.340967],[.449368,.813768,.335384],[.458674,.816363,.329727],[.468053,.818921,.323998],[.477504,.821444,.318195],[.487026,.823929,.312321],[.496615,.826376,.306377],[.506271,.828786,.300362],[.515992,.831158,.294279],[.525776,.833491,.288127],[.535621,.835785,.281908],[.545524,.838039,.275626],[.555484,.840254,.269281],[.565498,.84243,.262877],[.575563,.844566,.256415],[.585678,.846661,.249897],[.595839,.848717,.243329],[.606045,.850733,.236712],[.616293,.852709,.230052],[.626579,.854645,.223353],[.636902,.856542,.21662],[.647257,.8584,.209861],[.657642,.860219,.203082],[.668054,.861999,.196293],[.678489,.863742,.189503],[.688944,.865448,.182725],[.699415,.867117,.175971],[.709898,.868751,.169257],[.720391,.87035,.162603],[.730889,.871916,.156029],[.741388,.873449,.149561],[.751884,.874951,.143228],[.762373,.876424,.137064],[.772852,.877868,.131109],[.783315,.879285,.125405],[.79376,.880678,.120005],[.804182,.882046,.114965],[.814576,.883393,.110347],[.82494,.88472,.106217],[.83527,.886029,.102646],[.845561,.887322,.099702],[.85581,.888601,.097452],[.866013,.889868,.095953],[.876168,.891125,.09525],[.886271,.892374,.095374],[.89632,.893616,.096335],[.906311,.894855,.098125],[.916242,.896091,.100717],[.926106,.89733,.104071],[.935904,.89857,.108131],[.945636,.899815,.112838],[.9553,.901065,.118128],[.964894,.902323,.123941],[.974417,.90359,.130215],[.983868,.904867,.136897],[.993248,.906157,.143936]];function ke(e){const l=Math.min(Math.floor(e*(Ol.length-1)),Ol.length-2),n=e*(Ol.length-1)-l,t=Ol[l],o=Ol[l+1];return[Math.round((t[0]+n*(o[0]-t[0]))*255),Math.round((t[1]+n*(o[1]-t[1]))*255),Math.round((t[2]+n*(o[2]-t[2]))*255),255]}function Tt(e){const l=Math.round(255*(.0588+e*1)),n=Math.round(255*(.0196+e*(.0196-.0196))),t=Math.round(255*(.8588+e*(.0196-.8588)));return[l,n,t,255]}function At(e){const l=Math.round(255*(0+e*1)),n=Math.round(255*(0+e*1)),t=Math.round(255*(0+e*1));return[l,n,t,255]}function wt(e){const l=Math.round(255*(0+e*1)),n=Math.round(255*(0+e*0)),t=Math.round(255*(0+e*1));return[l,n,t,255]}function St(e){let l=1,n=1,t=1;return e<.125?(l=0,n=0,t=.5+4*e):e<.375?(l=0,n=4*(e-.125),t=1):e<.625?(l=4*(e-.375),n=1,t=1-4*(e-.375)):e<.875?(l=1,n=1-4*(e-.625),t=0):(l=1-4*(e-.875),n=0,t=0),[Math.round(l*255),Math.round(n*255),Math.round(t*255),255]}function Nt(e){let l=1,n=1,t=1;return e<.333?(l=3*e,n=0,t=0):e<.667?(l=1,n=3*(e-.333),t=0):(l=1,n=1,t=3*(e-.667)),[Math.round(l*255),Math.round(n*255),Math.round(t*255),255]}function Vt(e){return[Math.round(e*255),Math.round((1-e)*255),255,255]}function Pt(e){const l=Math.round(e*255);return[l,l,l,255]}function Ot(){return{viridis:ke,plasma:Tt,inferno:At,magma:wt,jet:St,hot:Nt,cool:Vt,grayscale:Pt}}function Tn(e){return Ot()[e]??ke}function An(e,l){const n=document.createElement("canvas");return n.width=e,n.height=l,n}function ee(e,l,n,t){const o=e.getContext("2d"),i=new ImageData(new Uint8ClampedArray(l),n,t);o.putImageData(i,0,0)}function Dt(e,l,n,t=!0){const o=An(e,l),i=o.getContext("2d"),r=i.createImageData(e,l);if(t)for(let a=0;a<l;a++){const u=1-a/(l-1),[s,c,m,g]=n(u);for(let p=0;p<e;p++){const d=(a*e+p)*4;r.data[d]=s,r.data[d+1]=c,r.data[d+2]=m,r.data[d+3]=g}}else for(let a=0;a<e;a++){const u=a/(e-1),[s,c,m,g]=n(u);for(let p=0;p<l;p++){const d=(p*e+a)*4;r.data[d]=s,r.data[d+1]=c,r.data[d+2]=m,r.data[d+3]=g}}return i.putImageData(r,0,0),i.strokeStyle="#333",i.lineWidth=1,i.strokeRect(0,0,e,l),o}const Lt={id:"68541156820de978f2963673",name:"气象专用色标",version:"zefanc-20250619",active:!1,hashCode:"2b156d9c2e3c2587082ea2025d7d2054",createBy:"?????",createdDate:1750339926306,lastModifiedDate:1750339926306,lastModifiedBy:"?????",delFlag:!1,item:[{id:"670950ca-6e32-4df1-851f-145509e54be9",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"WINSAVG2MIN",unit:"m/s",maxValue:30,minValue:0,scale:1,gradient:null,remark:"2分钟平均风速",productType:"STATION",items:[{min:0,max:null,point:null,color:"rgb(102, 92, 169)",label:""},{min:3,max:null,point:null,color:"rgb(42, 116, 188)",label:""},{min:5,max:null,point:null,color:"rgb(9, 175, 229)",label:""},{min:10,max:null,point:null,color:"rgb(13, 179, 116)",label:""},{min:15,max:null,point:null,color:"rgb(237, 213, 39)",label:""},{min:20,max:null,point:null,color:"rgb(196, 84, 178)",label:""},{min:30,max:null,point:null,color:"rgb(54, 137, 215)",label:""}]},{id:"1710a752-5c74-444e-bd64-e62935782d67",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"WINDAYSINSTMAX",unit:"m/s",maxValue:30,minValue:0,scale:1,gradient:null,remark:"日极大风速",productType:"STATION",items:[{min:0,max:null,point:null,color:"rgb(102, 92, 169)",label:""},{min:3,max:null,point:null,color:"rgb(42, 116, 188)",label:""},{min:5,max:null,point:null,color:"rgb(9, 175, 229)",label:""},{min:10,max:null,point:null,color:"rgb(13, 179, 116)",label:""},{min:15,max:null,point:null,color:"rgb(237, 213, 39)",label:""},{min:20,max:null,point:null,color:"rgb(196, 84, 178)",label:""},{min:30,max:null,point:null,color:"rgb(54, 137, 215)",label:""}]},{id:"cd51718b-1567-44ab-8250-cb57418e57cd",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"WINSINST",unit:"m/s",maxValue:30,minValue:0,scale:1,gradient:null,remark:"瞬时风速",productType:"STATION",items:[{min:0,max:null,point:null,color:"rgb(102, 92, 169)",label:""},{min:3,max:null,point:null,color:"rgb(42, 116, 188)",label:""},{min:5,max:null,point:null,color:"rgb(9, 175, 229)",label:""},{min:10,max:null,point:null,color:"rgb(13, 179, 116)",label:""},{min:15,max:null,point:null,color:"rgb(237, 213, 39)",label:""},{min:20,max:null,point:null,color:"rgb(196, 84, 178)",label:""},{min:30,max:null,point:null,color:"rgb(54, 137, 215)",label:""}]},{id:"8a2b8fd3-2e4a-4133-be60-0fc82e89e086",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"WINSINSTHOURMAX",unit:"m/s",maxValue:30,minValue:0,scale:1,gradient:null,remark:"小时内极大风速",productType:"STATION",items:[{min:0,max:null,point:null,color:"rgb(102, 92, 169)",label:""},{min:3,max:null,point:null,color:"rgb(42, 116, 188)",label:""},{min:5,max:null,point:null,color:"rgb(9, 175, 229)",label:""},{min:10,max:null,point:null,color:"rgb(13, 179, 116)",label:""},{min:15,max:null,point:null,color:"rgb(237, 213, 39)",label:""},{min:20,max:null,point:null,color:"rgb(196, 84, 178)",label:""},{min:30,max:null,point:null,color:"rgb(54, 137, 215)",label:""}]},{id:"81447b91-c0b7-401d-9fe2-29b39341fd7c",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"TEM",unit:"℃",maxValue:40,minValue:-30,scale:1,gradient:!0,remark:"气温",productType:"STATION",items:[{min:-30,max:null,point:null,color:"rgb(7, 30, 120)",label:""},{min:-28,max:null,point:null,color:"rgb(17, 49, 139)",label:""},{min:-26,max:null,point:null,color:"rgb(27, 68, 159)",label:""},{min:-24,max:null,point:null,color:"rgb(38, 87, 179)",label:""},{min:-22,max:null,point:null,color:"rgb(48, 106, 199)",label:""},{min:-20,max:null,point:null,color:"rgb(59, 126, 219)",label:""},{min:-18,max:null,point:null,color:"rgb(78, 138, 221)",label:""},{min:-16,max:null,point:null,color:"rgb(97, 150, 224)",label:""},{min:-14,max:null,point:null,color:"rgb(116, 163, 226)",label:""},{min:-12,max:null,point:null,color:"rgb(135, 179, 225)",label:""},{min:-10,max:null,point:null,color:"rgb(155, 188, 232)",label:""},{min:-8,max:null,point:null,color:"rgb(154, 196, 220)",label:""},{min:-6,max:null,point:null,color:"rgb(153, 205, 208)",label:""},{min:-4,max:null,point:null,color:"rgb(152, 214, 196)",label:""},{min:-2,max:null,point:null,color:"rgb(151, 232, 173)",label:""},{min:0,max:null,point:null,color:"rgb(255, 222, 126)",label:""},{min:2,max:null,point:null,color:"rgb(234, 219, 112)",label:""},{min:4,max:null,point:null,color:"rgb(244, 217, 99)",label:""},{min:6,max:null,point:null,color:"rgb(250, 204, 79)",label:""},{min:8,max:null,point:null,color:"rgb(247, 180, 45)",label:""},{min:10,max:null,point:null,color:"rgb(242, 155, 0)",label:""},{min:12,max:null,point:null,color:"rgb(241, 147, 3)",label:""},{min:14,max:null,point:null,color:"rgb(240, 132, 10)",label:""},{min:16,max:null,point:null,color:"rgb(239, 117, 17)",label:""},{min:18,max:null,point:null,color:"rgb(238, 102, 24)",label:""},{min:20,max:null,point:null,color:"rgb(238, 88, 31)",label:""},{min:22,max:null,point:null,color:"rgb(231, 75, 26)",label:""},{min:24,max:null,point:null,color:"rgb(224, 63, 22)",label:""},{min:26,max:null,point:null,color:"rgb(217, 51, 18)",label:""},{min:28,max:null,point:null,color:"rgb(208, 36, 14)",label:""},{min:30,max:null,point:null,color:"rgb(194, 0, 3)",label:""},{min:32,max:null,point:null,color:"rgb(181, 1, 9)",label:""},{min:34,max:null,point:null,color:"rgb(169, 2, 16)",label:""},{min:36,max:null,point:null,color:"rgb(138, 5, 25)",label:""},{min:38,max:null,point:null,color:"rgb(111, 0, 21)",label:""},{min:40,max:null,point:null,color:"rgb(80, 0, 15)",label:""}]},{id:"9f49b3a4-a225-48c9-8cbb-05bede575a29",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"TEMMAX",unit:"℃",maxValue:40,minValue:-30,scale:1,gradient:!0,remark:"日最高气温",productType:"STATION",items:[{min:-30,max:null,point:null,color:"rgb(7, 30, 120)",label:""},{min:-28,max:null,point:null,color:"rgb(17, 49, 139)",label:""},{min:-26,max:null,point:null,color:"rgb(27, 68, 159)",label:""},{min:-24,max:null,point:null,color:"rgb(38, 87, 179)",label:""},{min:-22,max:null,point:null,color:"rgb(48, 106, 199)",label:""},{min:-20,max:null,point:null,color:"rgb(59, 126, 219)",label:""},{min:-18,max:null,point:null,color:"rgb(78, 138, 221)",label:""},{min:-16,max:null,point:null,color:"rgb(97, 150, 224)",label:""},{min:-14,max:null,point:null,color:"rgb(116, 163, 226)",label:""},{min:-12,max:null,point:null,color:"rgb(135, 179, 225)",label:""},{min:-10,max:null,point:null,color:"rgb(155, 188, 232)",label:""},{min:-8,max:null,point:null,color:"rgb(154, 196, 220)",label:""},{min:-6,max:null,point:null,color:"rgb(153, 205, 208)",label:""},{min:-4,max:null,point:null,color:"rgb(152, 214, 196)",label:""},{min:-2,max:null,point:null,color:"rgb(151, 232, 173)",label:""},{min:0,max:null,point:null,color:"rgb(255, 222, 126)",label:""},{min:2,max:null,point:null,color:"rgb(234, 219, 112)",label:""},{min:4,max:null,point:null,color:"rgb(244, 217, 99)",label:""},{min:6,max:null,point:null,color:"rgb(250, 204, 79)",label:""},{min:8,max:null,point:null,color:"rgb(247, 180, 45)",label:""},{min:10,max:null,point:null,color:"rgb(242, 155, 0)",label:""},{min:12,max:null,point:null,color:"rgb(241, 147, 3)",label:""},{min:14,max:null,point:null,color:"rgb(240, 132, 10)",label:""},{min:16,max:null,point:null,color:"rgb(239, 117, 17)",label:""},{min:18,max:null,point:null,color:"rgb(238, 102, 24)",label:""},{min:20,max:null,point:null,color:"rgb(238, 88, 31)",label:""},{min:22,max:null,point:null,color:"rgb(231, 75, 26)",label:""},{min:24,max:null,point:null,color:"rgb(224, 63, 22)",label:""},{min:26,max:null,point:null,color:"rgb(217, 51, 18)",label:""},{min:28,max:null,point:null,color:"rgb(208, 36, 14)",label:""},{min:30,max:null,point:null,color:"rgb(194, 0, 3)",label:""},{min:32,max:null,point:null,color:"rgb(181, 1, 9)",label:""},{min:34,max:null,point:null,color:"rgb(169, 2, 16)",label:""},{min:36,max:null,point:null,color:"rgb(138, 5, 25)",label:""},{min:38,max:null,point:null,color:"rgb(111, 0, 21)",label:""},{min:40,max:null,point:null,color:"rgb(80, 0, 15)",label:""}]},{id:"33f40cbc-d49c-44d8-8656-c3ec8d0d527a",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"TEMMIN",unit:"℃",maxValue:40,minValue:-30,scale:1,gradient:!0,remark:"日最低气温",productType:"STATION",items:[{min:-30,max:null,point:null,color:"rgb(7, 30, 120)",label:""},{min:-28,max:null,point:null,color:"rgb(17, 49, 139)",label:""},{min:-26,max:null,point:null,color:"rgb(27, 68, 159)",label:""},{min:-24,max:null,point:null,color:"rgb(38, 87, 179)",label:""},{min:-22,max:null,point:null,color:"rgb(48, 106, 199)",label:""},{min:-20,max:null,point:null,color:"rgb(59, 126, 219)",label:""},{min:-18,max:null,point:null,color:"rgb(78, 138, 221)",label:""},{min:-16,max:null,point:null,color:"rgb(97, 150, 224)",label:""},{min:-14,max:null,point:null,color:"rgb(116, 163, 226)",label:""},{min:-12,max:null,point:null,color:"rgb(135, 179, 225)",label:""},{min:-10,max:null,point:null,color:"rgb(155, 188, 232)",label:""},{min:-8,max:null,point:null,color:"rgb(154, 196, 220)",label:""},{min:-6,max:null,point:null,color:"rgb(153, 205, 208)",label:""},{min:-4,max:null,point:null,color:"rgb(152, 214, 196)",label:""},{min:-2,max:null,point:null,color:"rgb(151, 232, 173)",label:""},{min:0,max:null,point:null,color:"rgb(255, 222, 126)",label:""},{min:2,max:null,point:null,color:"rgb(234, 219, 112)",label:""},{min:4,max:null,point:null,color:"rgb(244, 217, 99)",label:""},{min:6,max:null,point:null,color:"rgb(250, 204, 79)",label:""},{min:8,max:null,point:null,color:"rgb(247, 180, 45)",label:""},{min:10,max:null,point:null,color:"rgb(242, 155, 0)",label:""},{min:12,max:null,point:null,color:"rgb(241, 147, 3)",label:""},{min:14,max:null,point:null,color:"rgb(240, 132, 10)",label:""},{min:16,max:null,point:null,color:"rgb(239, 117, 17)",label:""},{min:18,max:null,point:null,color:"rgb(238, 102, 24)",label:""},{min:20,max:null,point:null,color:"rgb(238, 88, 31)",label:""},{min:22,max:null,point:null,color:"rgb(231, 75, 26)",label:""},{min:24,max:null,point:null,color:"rgb(224, 63, 22)",label:""},{min:26,max:null,point:null,color:"rgb(217, 51, 18)",label:""},{min:28,max:null,point:null,color:"rgb(208, 36, 14)",label:""},{min:30,max:null,point:null,color:"rgb(194, 0, 3)",label:""},{min:32,max:null,point:null,color:"rgb(181, 1, 9)",label:""},{min:34,max:null,point:null,color:"rgb(169, 2, 16)",label:""},{min:36,max:null,point:null,color:"rgb(138, 5, 25)",label:""},{min:38,max:null,point:null,color:"rgb(111, 0, 21)",label:""},{min:40,max:null,point:null,color:"rgb(80, 0, 15)",label:""}]},{id:"5542d502-6d93-4cd7-8c5d-c30b506a1f96",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"AP6M",unit:"mm",maxValue:10,minValue:1,scale:1,gradient:null,remark:"6分钟雨量",productType:"NWP",items:[{min:0,max:null,point:null,color:"rgb(205, 244, 206)",label:""},{min:.02,max:null,point:null,color:"rgb(170, 248, 164)",label:""},{min:.3,max:null,point:null,color:"rgb(69, 245, 69)",label:""},{min:1.2,max:null,point:null,color:"rgb(111, 181, 251)",label:""},{min:2.5,max:null,point:null,color:"rgb(71, 56, 250)",label:""},{min:4.5,max:null,point:null,color:"rgb(198, 61, 247)",label:""},{min:7,max:null,point:null,color:"rgb(167, 56, 133)",label:""}]},{id:"b47cd1b6-8560-47fe-97fd-966fabd6ef9a",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"CAPE",unit:"J/kg",maxValue:4e3,minValue:0,scale:null,gradient:null,remark:"数值模式CAPE指标",productType:"NWP",items:[{min:0,max:null,point:null,color:"rgb(255, 255, 204)",label:""},{min:400,max:null,point:null,color:"rgb(255, 237, 160)",label:""},{min:800,max:null,point:null,color:"rgb(255, 217, 118)",label:""},{min:1200,max:null,point:null,color:"rgb(254, 178, 76)",label:""},{min:1600,max:null,point:null,color:"rgb(253, 141, 60)",label:""},{min:2e3,max:null,point:null,color:"rgb(252, 75, 42)",label:""},{min:2400,max:null,point:null,color:"rgb(227, 26, 28)",label:""},{min:2800,max:null,point:null,color:"rgb(189, 0, 38)",label:""},{min:3200,max:null,point:null,color:"rgb(128, 0, 38)",label:""},{min:3600,max:null,point:null,color:"rgb(100, 0, 38)",label:""}]},{id:"f2eef036-a0e1-4f43-9af8-3ed771c4c57f",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"CIN",unit:"J/kg",maxValue:1e3,minValue:0,scale:null,gradient:null,remark:"数值模式CAPE指标",productType:"NWP",items:[{min:0,max:null,point:null,color:"rgb(255,255,255)",label:""},{min:100,max:null,point:null,color:"rgb(230, 230, 230)",label:""},{min:200,max:null,point:null,color:"rgb(204, 204, 204)",label:""},{min:300,max:null,point:null,color:"rgb(179, 179, 179)",label:""},{min:400,max:null,point:null,color:"rgb(153, 153, 153)",label:""},{min:500,max:null,point:null,color:"rgb(128, 128, 128)",label:""},{min:600,max:null,point:null,color:"rgb(102, 102, 102)",label:""},{min:700,max:null,point:null,color:"rgb(77, 77, 77)",label:""},{min:800,max:null,point:null,color:"rgb(51, 51, 51)",label:""},{min:900,max:null,point:null,color:"rgb(26, 26, 26)",label:""},{min:1e3,max:null,point:null,color:"rgb(0, 0, 0)",label:""}]},{id:"ARD",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"ARD",unit:"/s*1E(-4)",maxValue:60,minValue:-100,scale:1e-4,gradient:null,remark:"方位涡度",productType:"RADAR",items:[{min:-100,max:-60,point:null,color:"rgb(99,0,255)",label:null},{min:-60,max:-50,point:null,color:"rgb(0,0,255)",label:null},{min:-50,max:-30,point:null,color:"rgb(0,154,255)",label:null},{min:-30,max:-20,point:null,color:"rgb(99,255,255)",label:null},{min:-20,max:-10,point:null,color:"rgb(181,255,0)",label:null},{min:-10,max:-5,point:null,color:"rgb(0,255,0)",label:null},{min:-5,max:-1,point:null,color:"rgb(0,182,0)",label:null},{min:-1,max:-.2,point:null,color:"rgb(0,117,0)",label:null},{min:-.2,max:.2,point:null,color:"rgb(255,255,255)",label:null},{min:.2,max:1,point:null,color:"rgb(255,101,0)",label:null},{min:1,max:5,point:null,color:"rgb(255,182,0)",label:null},{min:5,max:10,point:null,color:"rgb(255,255,0)",label:null},{min:10,max:20,point:null,color:"rgb(255,154,255)",label:null},{min:20,max:30,point:null,color:"rgb(255,0,255)",label:null},{min:30,max:50,point:null,color:"rgb(255,121,123)",label:null},{min:50,max:60,point:null,color:"rgb(255,0,0)",label:null},{min:60,max:null,point:null,color:"rgb(132,0,0)",label:null}]},{id:"BOTS",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"BOTS",unit:"km",maxValue:21,minValue:0,scale:null,gradient:null,remark:"回波底高",productType:"RADAR",items:[{min:0,max:2,point:null,color:"rgb(190,190,190)",label:null},{min:2,max:3,point:null,color:"rgb(118,118,118)",label:null},{min:3,max:5,point:null,color:"rgb(0,224,255)",label:null},{min:5,max:6,point:null,color:"rgb(0,176,255)",label:null},{min:6,max:8,point:null,color:"rgb(0,144,204)",label:null},{min:8,max:9,point:null,color:"rgb(50,0,150)",label:null},{min:9,max:11,point:null,color:"rgb(0,251,144)",label:null},{min:11,max:12,point:null,color:"rgb(0,187,0)",label:null},{min:12,max:14,point:null,color:"rgb(0,239,0)",label:null},{min:14,max:15,point:null,color:"rgb(254,191,0)",label:null},{min:15,max:17,point:null,color:"rgb(255,255,0)",label:null},{min:17,max:18,point:null,color:"rgb(174,0,0)",label:null},{min:18,max:20,point:null,color:"rgb(255,0,0)",label:null},{min:20,max:21,point:null,color:"rgb(255,255,255)",label:null},{min:21,max:null,point:null,color:"rgb(231,0,255)",label:null}]},{id:"CKDP",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"CKDP",unit:"deg/km",maxValue:20,minValue:-.8,scale:null,gradient:null,remark:"组合差分相移率",productType:"RADAR",items:[{min:-.8,max:-.4,point:null,color:"rgb(0, 255, 255)",label:null},{min:-.4,max:-.2,point:null,color:"rgb(0, 239, 239)",label:null},{min:-.2,max:-.1,point:null,color:"rgb(0, 170, 173)",label:null},{min:-.1,max:.1,point:null,color:"rgb(181, 182, 181)",label:null},{min:.1,max:.15,point:null,color:"rgb(181, 182, 181)",label:null},{min:.15,max:.22,point:null,color:"rgb(0, 195, 33)",label:null},{min:.22,max:.33,point:null,color:"rgb(0, 235, 8)",label:null},{min:.33,max:.5,point:null,color:"rgb(33, 255, 33)",label:null},{min:.5,max:.75,point:null,color:"rgb(255,253,73)",label:null},{min:.75,max:1.1,point:null,color:"rgb(255,227,60)",label:null},{min:1.1,max:1.7,point:null,color:"rgb(254,185,51)",label:null},{min:1.7,max:2.4,point:null,color:"rgb(254,149,44)",label:null},{min:2.4,max:3.1,point:null,color:"rgb(253,92,33)",label:null},{min:3.1,max:7,point:null,color:"rgb(240,15,25)",label:null},{min:7,max:20,point:null,color:"rgb(184,0,61)",label:null},{min:20,max:null,point:null,color:"rgb(253,40,250)",label:null}]},{id:"CRM",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"CRM",unit:"dBZ",maxValue:75,minValue:5,scale:null,gradient:null,remark:"混合反射率因子",productType:"RADAR",items:[{min:5,max:10,point:null,color:"rgb(35,236,235)",label:null},{min:10,max:15,point:null,color:"rgb(19,160,220)",label:null},{min:15,max:20,point:null,color:"rgb(0,41,240)",label:null},{min:20,max:25,point:null,color:"rgb(43,252,62)",label:null},{min:25,max:30,point:null,color:"rgb(34,197,49)",label:null},{min:30,max:35,point:null,color:"rgb(24,142,35)",label:null},{min:35,max:40,point:null,color:"rgb(255,252,66)",label:null},{min:40,max:45,point:null,color:"rgb(229,189,51)",label:null},{min:45,max:50,point:null,color:"rgb(253,141,42)",label:null},{min:50,max:55,point:null,color:"rgb(252,0,25)",label:null},{min:55,max:60,point:null,color:"rgb(163,0,17)",label:null},{min:60,max:65,point:null,color:"rgb(99,0,10)",label:null},{min:65,max:70,point:null,color:"rgb(252,40,249)",label:null},{min:70,max:75,point:null,color:"rgb(149,89,195)",label:null},{min:75,max:null,point:null,color:"rgb(255,255,255)",label:null}]},{id:"CRU",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"CRU",unit:"dBZ",maxValue:75,minValue:5,scale:null,gradient:null,remark:"N层组合反射率",productType:"RADAR",items:[{min:5,max:10,point:null,color:"rgb(35,236,235)",label:null},{min:10,max:15,point:null,color:"rgb(19,160,220)",label:null},{min:15,max:20,point:null,color:"rgb(0,41,240)",label:null},{min:20,max:25,point:null,color:"rgb(43,252,62)",label:null},{min:25,max:30,point:null,color:"rgb(34,197,49)",label:null},{min:30,max:35,point:null,color:"rgb(24,142,35)",label:null},{min:35,max:40,point:null,color:"rgb(255,252,66)",label:null},{min:40,max:45,point:null,color:"rgb(229,189,51)",label:null},{min:45,max:50,point:null,color:"rgb(253,141,42)",label:null},{min:50,max:55,point:null,color:"rgb(252,0,25)",label:null},{min:55,max:60,point:null,color:"rgb(163,0,17)",label:null},{min:60,max:65,point:null,color:"rgb(99,0,10)",label:null},{min:65,max:70,point:null,color:"rgb(252,40,249)",label:null},{min:70,max:75,point:null,color:"rgb(149,89,195)",label:null},{min:75,max:null,point:null,color:"rgb(255,255,255)",label:null}]},{id:"CS",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"CS",unit:"/s*1E(-4)",maxValue:300,minValue:0,scale:1e-4,gradient:null,remark:"综合切变",productType:"RADAR",items:[{min:.01,max:5,point:null,color:"rgb(82,81,82)",label:null},{min:5,max:10,point:null,color:"rgb(115,117,115)",label:null},{min:10,max:20,point:null,color:"rgb(173,170,173)",label:null},{min:20,max:30,point:null,color:"rgb(49,0,148)",label:null},{min:30,max:40,point:null,color:"rgb(0,130,255)",label:null},{min:40,max:50,point:null,color:"rgb(0,255,255)",label:null},{min:50,max:60,point:null,color:"rgb(0,142,0)",label:null},{min:60,max:70,point:null,color:"rgb(0,186,0)",label:null},{min:70,max:80,point:null,color:"rgb(0,255,0)",label:null},{min:80,max:90,point:null,color:"rgb(206,101,0)",label:null},{min:90,max:100,point:null,color:"rgb(255,170,0)",label:null},{min:100,max:150,point:null,color:"rgb(255,255,0)",label:null},{min:150,max:200,point:null,color:"rgb(173,0,0)",label:null},{min:200,max:250,point:null,color:"rgb(255,0,0)",label:null},{min:250,max:300,point:null,color:"rgb(255,125,123)",label:null},{min:300,max:null,point:null,color:"rgb(148,0,148)",label:null}]},{id:"c3811d63-ac60-4931-91e5-d13665e1d91c",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"DBZ",unit:"dBZ",maxValue:75,minValue:5,scale:null,gradient:null,remark:"数值模式反射率",productType:"NWP",items:[{min:5,max:10,point:null,color:"rgb(35,236,235)",label:null},{min:10,max:15,point:null,color:"rgb(19,160,220)",label:null},{min:15,max:20,point:null,color:"rgb(0,41,240)",label:null},{min:20,max:25,point:null,color:"rgb(43,252,62)",label:null},{min:25,max:30,point:null,color:"rgb(34,197,49)",label:null},{min:30,max:35,point:null,color:"rgb(24,142,35)",label:null},{min:35,max:40,point:null,color:"rgb(255,252,66)",label:null},{min:40,max:45,point:null,color:"rgb(229,189,51)",label:null},{min:45,max:50,point:null,color:"rgb(253,141,42)",label:null},{min:50,max:55,point:null,color:"rgb(252,0,25)",label:null},{min:55,max:60,point:null,color:"rgb(163,0,17)",label:null},{min:60,max:65,point:null,color:"rgb(99,0,10)",label:null},{min:65,max:70,point:null,color:"rgb(252,40,249)",label:null},{min:70,max:75,point:null,color:"rgb(149,89,195)",label:null},{min:75,max:null,point:null,color:"rgb(255,255,255)",label:null}]},{id:"490a7adf-0a98-4df7-80cf-ee0d51130abc",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"DHP",unit:"mm",maxValue:203.2,minValue:0,scale:null,gradient:null,remark:"2小时降雨",productType:"FORECAST",items:[{min:.1,max:2.54,point:null,color:"rgb(170,170,170)",label:null},{min:2.54,max:6.35,point:null,color:"rgb(118,118,118)",label:null},{min:6.35,max:12.7,point:null,color:"rgb(0,255,255)",label:null},{min:12.7,max:19.05,point:null,color:"rgb(0,175,175)",label:null},{min:19.05,max:25.4,point:null,color:"rgb(0,255,0)",label:null},{min:25.4,max:31.75,point:null,color:"rgb(0,143,0)",label:null},{min:31.75,max:38.1,point:null,color:"rgb(255,0,255)",label:null},{min:38.1,max:44.45,point:null,color:"rgb(175,50,125)",label:null},{min:44.45,max:50.8,point:null,color:"rgb(0,0,255)",label:null},{min:50.8,max:63.5,point:null,color:"rgb(50,0,150)",label:null},{min:63.5,max:76.2,point:null,color:"rgb(255,255,0)",label:null},{min:76.2,max:101.6,point:null,color:"rgb(255,170,0)",label:null},{min:101.6,max:152.4,point:null,color:"rgb(255,0,0)",label:null},{min:152.4,max:203.2,point:null,color:"rgb(174,0,0)",label:null},{min:203.2,max:null,point:null,color:"rgb(255,255,255)",label:null}]},{id:"EMAX",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"EMAX",unit:"km",maxValue:21,minValue:0,scale:null,gradient:null,remark:"最强回波高度",productType:"RADAR",items:[{min:.1,max:2,point:null,color:"rgb(190,190,190)",label:null},{min:2,max:3,point:null,color:"rgb(118,118,118)",label:null},{min:3,max:5,point:null,color:"rgb(0,224,255)",label:null},{min:5,max:6,point:null,color:"rgb(0,176,255)",label:null},{min:6,max:8,point:null,color:"rgb(0,144,204)",label:null},{min:8,max:9,point:null,color:"rgb(50,0,150)",label:null},{min:9,max:11,point:null,color:"rgb(0,254,144)",label:null},{min:11,max:12,point:null,color:"rgb(0,187,0)",label:null},{min:12,max:14,point:null,color:"rgb(0,239,0)",label:null},{min:14,max:15,point:null,color:"rgb(254,191,0)",label:null},{min:15,max:17,point:null,color:"rgb(255,255,60)",label:null},{min:17,max:18,point:null,color:"rgb(174,0,0)",label:null},{min:18,max:20,point:null,color:"rgb(255,0,0)",label:null},{min:20,max:21,point:null,color:"rgb(255,255,255)",label:null},{min:21,max:null,point:null,color:"rgb(231,0,255)",label:null}]},{id:"HYDROS",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"HYDROS",unit:"",maxValue:11,minValue:0,scale:null,gradient:null,remark:"水凝物分类",productType:"RADAR",items:[{min:-999,max:1,point:null,color:"rgb(0,255,46)",label:"小雨"},{min:1,max:2,point:null,color:"rgb(0,204,100)",label:"中雨"},{min:2,max:3,point:null,color:"rgb(2,100,26)",label:"大雨"},{min:3,max:4,point:null,color:"rgb(101,129,28)",label:"大雨滴"},{min:4,max:5,point:null,color:"rgb(253,1,0)",label:"冰雹"},{min:5,max:6,point:null,color:"rgb(255,202,129)",label:"雨加雹"},{min:6,max:7,point:null,color:"rgb(255,0,250)",label:"霰/雹"},{min:7,max:8,point:null,color:"rgb(0,0,251)",label:"干雪"},{min:8,max:9,point:null,color:"rgb(25,25,134)",label:"湿雪"},{min:9,max:10,point:null,color:"rgb(141,57,242)",label:"H-冰晶"},{min:10,max:11,point:null,color:"rgb(117,113,233)",label:"V-冰晶"},{min:11,max:null,point:null,color:"rgb(204,204,192)",label:"地物杂波"}]},{id:"KDP",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"KDP",unit:"deg/km",maxValue:20,minValue:-.8,scale:null,gradient:null,remark:"差分传播相位率",productType:"RADAR",items:[{min:-.8,max:-.4,point:null,color:"rgb(0, 255, 255)",label:null},{min:-.4,max:-.2,point:null,color:"rgb(0, 239, 239)",label:null},{min:-.2,max:-.1,point:null,color:"rgb(0, 170, 173)",label:null},{min:-.1,max:.1,point:null,color:"rgb(181, 182, 181)",label:null},{min:.1,max:.15,point:null,color:"rgb(181, 182, 181)",label:null},{min:.15,max:.22,point:null,color:"rgb(0, 195, 33)",label:null},{min:.22,max:.33,point:null,color:"rgb(0, 235, 8)",label:null},{min:.33,max:.5,point:null,color:"rgb(33, 255, 33)",label:null},{min:.5,max:.75,point:null,color:"rgb(255,253,73)",label:null},{min:.75,max:1.1,point:null,color:"rgb(255,227,60)",label:null},{min:1.1,max:1.7,point:null,color:"rgb(254,185,51)",label:null},{min:1.7,max:2.4,point:null,color:"rgb(254,149,44)",label:null},{min:2.4,max:3.1,point:null,color:"rgb(253,92,33)",label:null},{min:3.1,max:7,point:null,color:"rgb(240,15,25)",label:null},{min:7,max:20,point:null,color:"rgb(184,0,61)",label:null},{min:20,max:null,point:null,color:"rgb(253,40,250)",label:null}]},{id:"LRA",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"LRA",unit:"dBZ",maxValue:75,minValue:5,scale:null,gradient:null,remark:"分层组合反射率平均值",productType:"RADAR",items:[{min:5,max:10,point:null,color:"rgb(35,236,235)",label:null},{min:10,max:15,point:null,color:"rgb(19,160,220)",label:null},{min:15,max:20,point:null,color:"rgb(0,41,240)",label:null},{min:20,max:25,point:null,color:"rgb(43,252,62)",label:null},{min:25,max:30,point:null,color:"rgb(34,197,49)",label:null},{min:30,max:35,point:null,color:"rgb(24,142,35)",label:null},{min:35,max:40,point:null,color:"rgb(255,252,66)",label:null},{min:40,max:45,point:null,color:"rgb(229,189,51)",label:null},{min:45,max:50,point:null,color:"rgb(253,141,42)",label:null},{min:50,max:55,point:null,color:"rgb(252,0,25)",label:null},{min:55,max:60,point:null,color:"rgb(163,0,17)",label:null},{min:60,max:65,point:null,color:"rgb(99,0,10)",label:null},{min:65,max:70,point:null,color:"rgb(252,40,249)",label:null},{min:70,max:75,point:null,color:"rgb(149,89,195)",label:null},{min:75,max:null,point:null,color:"rgb(255,255,255)",label:null}]},{id:"LRM",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"LRM",unit:"dBZ",maxValue:75,minValue:5,scale:null,gradient:null,remark:"分层组合反射率最大值",productType:"RADAR",items:[{min:5,max:10,point:null,color:"rgb(35,236,235)",label:null},{min:10,max:15,point:null,color:"rgb(19,160,220)",label:null},{min:15,max:20,point:null,color:"rgb(0,41,240)",label:null},{min:20,max:25,point:null,color:"rgb(43,252,62)",label:null},{min:25,max:30,point:null,color:"rgb(34,197,49)",label:null},{min:30,max:35,point:null,color:"rgb(24,142,35)",label:null},{min:35,max:40,point:null,color:"rgb(255,252,66)",label:null},{min:40,max:45,point:null,color:"rgb(229,189,51)",label:null},{min:45,max:50,point:null,color:"rgb(253,141,42)",label:null},{min:50,max:55,point:null,color:"rgb(252,0,25)",label:null},{min:55,max:60,point:null,color:"rgb(163,0,17)",label:null},{min:60,max:65,point:null,color:"rgb(99,0,10)",label:null},{min:65,max:70,point:null,color:"rgb(252,40,249)",label:null},{min:70,max:75,point:null,color:"rgb(149,89,195)",label:null},{min:75,max:null,point:null,color:"rgb(255,255,255)",label:null}]},{id:"MAX",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"MAX",unit:"dBZ",maxValue:75,minValue:5,scale:null,gradient:null,remark:"最大值",productType:"RADAR",items:[{min:5,max:10,point:null,color:"rgb(35,236,235)",label:null},{min:10,max:15,point:null,color:"rgb(19,160,220)",label:null},{min:15,max:20,point:null,color:"rgb(0,41,240)",label:null},{min:20,max:25,point:null,color:"rgb(43,252,62)",label:null},{min:25,max:30,point:null,color:"rgb(34,197,49)",label:null},{min:30,max:35,point:null,color:"rgb(24,142,35)",label:null},{min:35,max:40,point:null,color:"rgb(255,252,66)",label:null},{min:40,max:45,point:null,color:"rgb(229,189,51)",label:null},{min:45,max:50,point:null,color:"rgb(253,141,42)",label:null},{min:50,max:55,point:null,color:"rgb(252,0,25)",label:null},{min:55,max:60,point:null,color:"rgb(163,0,17)",label:null},{min:60,max:65,point:null,color:"rgb(99,0,10)",label:null},{min:65,max:70,point:null,color:"rgb(252,40,249)",label:null},{min:70,max:75,point:null,color:"rgb(149,89,195)",label:null},{min:75,max:null,point:null,color:"rgb(255,255,255)",label:null}]},{id:"MLDA",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"MLDA",unit:"km",maxValue:21,minValue:0,scale:null,gradient:null,remark:"融化层",productType:"RADAR",items:[{min:1,max:2,point:null,color:"rgb(0,224,255)",label:null},{min:2,max:3,point:null,color:"rgb(0,176,255)",label:null},{min:3,max:4,point:null,color:"rgb(0,144,204)",label:null},{min:4,max:5,point:null,color:"rgb(50,0,150)",label:null},{min:5,max:6,point:null,color:"rgb(0,251,144)",label:null},{min:6,max:7,point:null,color:"rgb(0,187,0)",label:null},{min:7,max:8,point:null,color:"rgb(0,239,0)",label:null},{min:8,max:9,point:null,color:"rgb(254,191,0)",label:null},{min:9,max:10,point:null,color:"rgb(255,255,0)",label:null},{min:10,max:null,point:null,color:"rgb(174,0,0)",label:null}]},{id:"NHP",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"NHP",unit:"mm",maxValue:203.2,minValue:0,scale:null,gradient:null,remark:"N小时降水累计",productType:"RADAR",items:[{min:.1,max:2.54,point:null,color:"rgb(170,170,170)",label:null},{min:2.54,max:6.35,point:null,color:"rgb(118,118,118)",label:null},{min:6.35,max:12.7,point:null,color:"rgb(0,255,255)",label:null},{min:12.7,max:19.05,point:null,color:"rgb(0,175,175)",label:null},{min:19.05,max:25.4,point:null,color:"rgb(0,255,0)",label:null},{min:25.4,max:31.75,point:null,color:"rgb(0,143,0)",label:null},{min:31.75,max:38.1,point:null,color:"rgb(255,0,255)",label:null},{min:38.1,max:44.45,point:null,color:"rgb(175,50,125)",label:null},{min:44.45,max:50.8,point:null,color:"rgb(0,0,255)",label:null},{min:50.8,max:63.5,point:null,color:"rgb(50,0,150)",label:null},{min:63.5,max:76.2,point:null,color:"rgb(255,255,0)",label:null},{min:76.2,max:101.6,point:null,color:"rgb(255,170,0)",label:null},{min:101.6,max:152.4,point:null,color:"rgb(255,0,0)",label:null},{min:152.4,max:203.2,point:null,color:"rgb(174,0,0)",label:null},{min:203.2,max:null,point:null,color:"rgb(255,255,255)",label:null}]},{id:"6087b310-2b71-4a1c-8017-4aa9069b9f9b",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"PRS",unit:"hPa",maxValue:1030,minValue:990,scale:1,gradient:null,remark:"气压",productType:"STATION",items:[{min:990,max:null,point:null,color:"rgb(2, 163, 233)",label:""},{min:1e3,max:null,point:null,color:"rgb(0, 178, 193)",label:""},{min:1010,max:null,point:null,color:"rgb(213, 213, 210)",label:""},{min:1020,max:null,point:null,color:"rgb(161, 120, 73)",label:""},{min:1030,max:null,point:null,color:"rgb(159, 82, 44)",label:""}]},{id:"QPE",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"QPE",unit:"mm/h",maxValue:203.2,minValue:0,scale:null,gradient:null,remark:"定量降雨估计",productType:"RADAR",items:[{min:.1,max:2.54,point:null,color:"rgb(170,170,170)",label:null},{min:2.54,max:6.35,point:null,color:"rgb(118,118,118)",label:null},{min:6.35,max:12.7,point:null,color:"rgb(0,255,255)",label:null},{min:12.7,max:19.05,point:null,color:"rgb(0,175,175)",label:null},{min:19.05,max:25.4,point:null,color:"rgb(0,255,0)",label:null},{min:25.4,max:31.75,point:null,color:"rgb(0,143,0)",label:null},{min:31.75,max:38.1,point:null,color:"rgb(255,0,255)",label:null},{min:38.1,max:44.45,point:null,color:"rgb(175,50,125)",label:null},{min:44.45,max:50.8,point:null,color:"rgb(0,0,255)",label:null},{min:50.8,max:63.5,point:null,color:"rgb(50,0,150)",label:null},{min:63.5,max:76.2,point:null,color:"rgb(255,255,0)",label:null},{min:76.2,max:101.6,point:null,color:"rgb(255,170,0)",label:null},{min:101.6,max:152.4,point:null,color:"rgb(255,0,0)",label:null},{min:152.4,max:203.2,point:null,color:"rgb(174,0,0)",label:null},{min:203.2,max:null,point:null,color:"rgb(255,255,255)",label:null}]},{id:"f4e42831-6f35-42e8-a9a8-17a76418f674",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"RAIN1H",unit:"mm",maxValue:203.2,minValue:0,scale:null,gradient:null,remark:"1小时降雨(自动站)",productType:"STATION",items:[{min:.1,max:2.54,point:null,color:"rgb(170,170,170)",label:null},{min:2.54,max:6.35,point:null,color:"rgb(118,118,118)",label:null},{min:6.35,max:12.7,point:null,color:"rgb(0,255,255)",label:null},{min:12.7,max:19.05,point:null,color:"rgb(0,175,175)",label:null},{min:19.05,max:25.4,point:null,color:"rgb(0,255,0)",label:null},{min:25.4,max:31.75,point:null,color:"rgb(0,143,0)",label:null},{min:31.75,max:38.1,point:null,color:"rgb(255,0,255)",label:null},{min:38.1,max:44.45,point:null,color:"rgb(175,50,125)",label:null},{min:44.45,max:50.8,point:null,color:"rgb(0,0,255)",label:null},{min:50.8,max:63.5,point:null,color:"rgb(50,0,150)",label:null},{min:63.5,max:76.2,point:null,color:"rgb(255,255,0)",label:null},{min:76.2,max:101.6,point:null,color:"rgb(255,170,0)",label:null},{min:101.6,max:152.4,point:null,color:"rgb(255,0,0)",label:null},{min:152.4,max:203.2,point:null,color:"rgb(174,0,0)",label:null},{min:203.2,max:null,point:null,color:"rgb(255,255,255)",label:null}]},{id:"becd87e7-73b8-49e1-836d-131da8556077",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"RAIN24H",unit:"mm",maxValue:203.2,minValue:0,scale:null,gradient:null,remark:"24小时降雨(自动站)",productType:"STATION",items:[{min:.1,max:2.54,point:null,color:"rgb(170,170,170)",label:null},{min:2.54,max:6.35,point:null,color:"rgb(118,118,118)",label:null},{min:6.35,max:12.7,point:null,color:"rgb(0,255,255)",label:null},{min:12.7,max:19.05,point:null,color:"rgb(0,175,175)",label:null},{min:19.05,max:25.4,point:null,color:"rgb(0,255,0)",label:null},{min:25.4,max:31.75,point:null,color:"rgb(0,143,0)",label:null},{min:31.75,max:38.1,point:null,color:"rgb(255,0,255)",label:null},{min:38.1,max:44.45,point:null,color:"rgb(175,50,125)",label:null},{min:44.45,max:50.8,point:null,color:"rgb(0,0,255)",label:null},{min:50.8,max:63.5,point:null,color:"rgb(50,0,150)",label:null},{min:63.5,max:76.2,point:null,color:"rgb(255,255,0)",label:null},{min:76.2,max:101.6,point:null,color:"rgb(255,170,0)",label:null},{min:101.6,max:152.4,point:null,color:"rgb(255,0,0)",label:null},{min:152.4,max:203.2,point:null,color:"rgb(174,0,0)",label:null},{min:203.2,max:null,point:null,color:"rgb(255,255,255)",label:null}]},{id:"fe99a6e7-7357-41af-8c50-54d57432e5c8",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"RAIN3H",unit:"mm",maxValue:203.2,minValue:0,scale:null,gradient:null,remark:"3小时降雨(自动站)",productType:"STATION",items:[{min:.1,max:2.54,point:null,color:"rgb(170,170,170)",label:null},{min:2.54,max:6.35,point:null,color:"rgb(118,118,118)",label:null},{min:6.35,max:12.7,point:null,color:"rgb(0,255,255)",label:null},{min:12.7,max:19.05,point:null,color:"rgb(0,175,175)",label:null},{min:19.05,max:25.4,point:null,color:"rgb(0,255,0)",label:null},{min:25.4,max:31.75,point:null,color:"rgb(0,143,0)",label:null},{min:31.75,max:38.1,point:null,color:"rgb(255,0,255)",label:null},{min:38.1,max:44.45,point:null,color:"rgb(175,50,125)",label:null},{min:44.45,max:50.8,point:null,color:"rgb(0,0,255)",label:null},{min:50.8,max:63.5,point:null,color:"rgb(50,0,150)",label:null},{min:63.5,max:76.2,point:null,color:"rgb(255,255,0)",label:null},{min:76.2,max:101.6,point:null,color:"rgb(255,170,0)",label:null},{min:101.6,max:152.4,point:null,color:"rgb(255,0,0)",label:null},{min:152.4,max:203.2,point:null,color:"rgb(174,0,0)",label:null},{min:203.2,max:null,point:null,color:"rgb(255,255,255)",label:null}]},{id:"4966cd41-90a7-48a9-885d-bd9e41124038",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"RH2",unit:"%",maxValue:100,minValue:0,scale:1,gradient:null,remark:"2米相对湿度",productType:"NWP",items:[{min:0,max:null,point:null,color:"rgb(236, 112, 96)",label:""},{min:10,max:null,point:null,color:"rgb(225, 137, 62)",label:""},{min:20,max:null,point:null,color:"rgb(232, 202, 76)",label:""},{min:30,max:null,point:null,color:"rgb(178, 220, 87)",label:""},{min:40,max:null,point:null,color:"rgb(105, 217, 86)",label:""},{min:50,max:null,point:null,color:"rgb(92, 196, 198)",label:""},{min:60,max:null,point:null,color:"rgb(72, 158, 215)",label:""},{min:70,max:null,point:null,color:"rgb(44, 94, 246)",label:""},{min:80,max:null,point:null,color:"rgb(28, 43, 188)",label:""},{min:90,max:null,point:null,color:"rgb(12, 27, 106)",label:""},{min:100,max:null,point:null,color:"rgb(12, 27, 106)",label:""}]},{id:"39addf4f-e817-4b1c-99b3-7fbbb42ae4f7",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"RHU",unit:"%",maxValue:100,minValue:0,scale:1,gradient:null,remark:"相对湿度",productType:"NWP",items:[{min:0,max:null,point:null,color:"rgb(242, 64, 63)",label:""},{min:10,max:null,point:null,color:"rgb(255, 92, 47)",label:""},{min:20,max:null,point:null,color:"rgb(255, 172, 54)",label:""},{min:30,max:null,point:null,color:"rgb(255, 233, 76)",label:""},{min:40,max:null,point:null,color:"rgb(255, 220, 103)",label:""},{min:50,max:null,point:null,color:"rgb(13, 179, 116)",label:""},{min:60,max:null,point:null,color:"rgb(9, 175, 229)",label:""},{min:70,max:null,point:null,color:"rgb(2, 163, 223)",label:""},{min:80,max:null,point:null,color:"rgb(42, 116, 188)",label:""},{min:90,max:null,point:null,color:"rgb(102, 92, 169)",label:""}]},{id:"RVD",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"RVD",unit:"/s*1E(-4)",maxValue:60,minValue:-60,scale:1e-4,gradient:null,remark:"径向散度",productType:"RADAR",items:[{min:-60,max:-50,point:null,color:"rgb(0,0,255)",label:null},{min:-50,max:-30,point:null,color:"rgb(0,81,255)",label:null},{min:-30,max:-20,point:null,color:"rgb(99,255,255)",label:null},{min:-20,max:-10,point:null,color:"rgb(181,255,0)",label:null},{min:-10,max:-5,point:null,color:"rgb(0,255,0)",label:null},{min:-5,max:-1,point:null,color:"rgb(0,182,0)",label:null},{min:-1,max:-.2,point:null,color:"rgb(0,117,0)",label:null},{min:-.2,max:.2,point:null,color:"rgb(255,255,255)",label:null},{min:.2,max:1,point:null,color:"rgb(255,101,0)",label:null},{min:1,max:5,point:null,color:"rgb(255,182,0)",label:null},{min:5,max:10,point:null,color:"rgb(255,255,0)",label:null},{min:10,max:20,point:null,color:"rgb(255,154,255)",label:null},{min:20,max:30,point:null,color:"rgb(255,0,255)",label:null},{min:30,max:50,point:null,color:"rgb(255,121,123)",label:null},{min:50,max:60,point:null,color:"rgb(255,0,0)",label:null},{min:60,max:null,point:null,color:"rgb(132,0,0)",label:null}]},{id:"SNR",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"SNR",unit:"dB",maxValue:10,minValue:0,scale:null,gradient:null,remark:null,productType:"RADAR",items:[{min:0,max:1,point:null,color:"rgb(0,0,0)",label:null},{min:1,max:2,point:null,color:"rgb(170,0,0)",label:null},{min:2,max:3,point:null,color:"rgb(0,85,0)",label:null},{min:3,max:4,point:null,color:"rgb(170,85,0)",label:null},{min:4,max:5,point:null,color:"rgb(255,255,127)",label:null},{min:5,max:6,point:null,color:"rgb(170,170,0)",label:null},{min:6,max:7,point:null,color:"rgb(0,255,0)",label:null},{min:7,max:8,point:null,color:"rgb(85,85,255)",label:null},{min:8,max:9,point:null,color:"rgb(0,0,127)",label:null},{min:9,max:10,point:null,color:"rgb(170,0,127)",label:null},{min:10,max:null,point:null,color:"rgb(0,85,127)",label:null}]},{id:"SQI",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"SQI",unit:"",maxValue:60,minValue:-100,scale:null,gradient:null,remark:null,productType:"RADAR",items:[{min:-100,max:-60,point:null,color:"rgb(132,84,255)",label:null},{min:-60,max:-50,point:null,color:"rgb(0,0,255)",label:null},{min:-50,max:-30,point:null,color:"rgb(0,170,255)",label:null},{min:-30,max:-20,point:null,color:"rgb(170,255,255)",label:null},{min:-20,max:-10,point:null,color:"rgb(170,255,0)",label:null},{min:-10,max:-5,point:null,color:"rgb(0,255,0)",label:null},{min:-5,max:-1,point:null,color:"rgb(0,170,0)",label:null},{min:-1,max:-.2,point:null,color:"rgb(0,85,0)",label:null},{min:-.2,max:.2,point:null,color:"rgb(255,255,255)",label:null},{min:.2,max:1,point:null,color:"rgb(255,118,38)",label:null},{min:1,max:5,point:null,color:"rgb(255,170,0)",label:null},{min:5,max:10,point:null,color:"rgb(255,255,0)",label:null},{min:10,max:20,point:null,color:"rgb(255,170,255)",label:null},{min:20,max:30,point:null,color:"rgb(255,60,229)",label:null},{min:30,max:50,point:null,color:"rgb(255,146,82)",label:null},{min:50,max:60,point:null,color:"rgb(255,0,0)",label:null},{min:60,max:null,point:null,color:"rgb(170,0,0)",label:null}]},{id:"SRM",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"SRM",unit:"m/s",maxValue:64,minValue:-64,scale:null,gradient:null,remark:"相对风暴速度",productType:"RADAR",items:[{min:-64,max:-62,point:null,color:"rgb(202,253,123)",label:null},{min:-62,max:-57,point:null,color:"rgb(162,202,100)",label:null},{min:-57,max:-52,point:null,color:"rgb(106,137,50)",label:null},{min:-52,max:-47,point:null,color:"rgb(79,96,49)",label:null},{min:-47,max:-42,point:null,color:"rgb(96,157,158)",label:null},{min:-42,max:-37,point:null,color:"rgb(175,195,220)",label:null},{min:-37,max:-32,point:null,color:"rgb(164,238,253)",label:null},{min:-32,max:-27,point:null,color:"rgb(47,224,251)",label:null},{min:-27,max:-20,point:null,color:"rgb(0,134,245)",label:null},{min:-20,max:-15,point:null,color:"rgb(54,38,140)",label:null},{min:-15,max:-10,point:null,color:"rgb(59,249,154)",label:null},{min:-10,max:-5,point:null,color:"rgb(44,183,145)",label:null},{min:-5,max:-1,point:null,color:"rgb(37,139,50)",label:null},{min:-1,max:0,point:null,color:"rgb(203,188,160)",label:null},{min:0,max:1,point:null,color:"rgb(255,255,255)",label:null},{min:1,max:5,point:null,color:"rgb(246,129,57)",label:null},{min:5,max:10,point:null,color:"rgb(255,201,76)",label:null},{min:10,max:15,point:null,color:"rgb(255,251,91)",label:null},{min:15,max:20,point:null,color:"rgb(168,0,28)",label:null},{min:20,max:27,point:null,color:"rgb(204,108,48)",label:null},{min:27,max:32,point:null,color:"rgb(251,0,39)",label:null},{min:32,max:37,point:null,color:"rgb(253,190,201)",label:null},{min:37,max:42,point:null,color:"rgb(253,105,108)",label:null},{min:42,max:47,point:null,color:"rgb(147,64,65)",label:null},{min:47,max:52,point:null,color:"rgb(215,114,210)",label:null},{min:52,max:57,point:null,color:"rgb(253,40,250)",label:null},{min:57,max:62,point:null,color:"rgb(182,71,241)",label:null},{min:62,max:64,point:null,color:"rgb(113,47,149)",label:null},{min:64,max:null,point:null,color:"rgb(137,22,135)",label:null}]},{id:"STP",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"STP",unit:"mm",maxValue:203.2,minValue:0,scale:null,gradient:null,remark:"风暴总累积降水量",productType:"RADAR",items:[{min:.01,max:2.54,point:null,color:"rgb(170,170,170)",label:null},{min:2.54,max:6.35,point:null,color:"rgb(118,118,118)",label:null},{min:6.35,max:12.7,point:null,color:"rgb(0,255,255)",label:null},{min:12.7,max:19.05,point:null,color:"rgb(0,175,175)",label:null},{min:19.05,max:25.4,point:null,color:"rgb(0,255,0)",label:null},{min:25.4,max:31.75,point:null,color:"rgb(0,143,0)",label:null},{min:31.75,max:38.1,point:null,color:"rgb(255,0,255)",label:null},{min:38.1,max:44.45,point:null,color:"rgb(175,50,125)",label:null},{min:44.45,max:50.8,point:null,color:"rgb(0,0,255)",label:null},{min:50.8,max:63.5,point:null,color:"rgb(50,0,150)",label:null},{min:63.5,max:76.2,point:null,color:"rgb(255,255,0)",label:null},{min:76.2,max:101.6,point:null,color:"rgb(255,170,0)",label:null},{min:101.6,max:152.4,point:null,color:"rgb(255,0,0)",label:null},{min:152.4,max:203.2,point:null,color:"rgb(174,0,0)",label:null},{min:203.2,max:null,point:null,color:"rgb(255,255,255)",label:null}]},{id:"SWP",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"SWP",unit:"",maxValue:50,minValue:20,scale:null,gradient:null,remark:"强天气概率",productType:"RADAR",items:[{min:20,max:35,point:null,color:"rgb(0,0,255)",label:null},{min:35,max:50,point:null,color:"rgb(255,255,0)",label:null},{min:50,max:null,point:null,color:"rgb(255,0,0)",label:null}]},{id:"T",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"T",unit:"dBZ",maxValue:75,minValue:5,scale:null,gradient:null,remark:"原始反射率",productType:"RADAR",items:[{min:5,max:10,point:null,color:"rgb(35,236,235)",label:null},{min:10,max:15,point:null,color:"rgb(19,160,220)",label:null},{min:15,max:20,point:null,color:"rgb(0,41,240)",label:null},{min:20,max:25,point:null,color:"rgb(43,252,62)",label:null},{min:25,max:30,point:null,color:"rgb(34,197,49)",label:null},{min:30,max:35,point:null,color:"rgb(24,142,35)",label:null},{min:35,max:40,point:null,color:"rgb(255,252,66)",label:null},{min:40,max:45,point:null,color:"rgb(229,189,51)",label:null},{min:45,max:50,point:null,color:"rgb(253,141,42)",label:null},{min:50,max:55,point:null,color:"rgb(252,0,25)",label:null},{min:55,max:60,point:null,color:"rgb(163,0,17)",label:null},{min:60,max:65,point:null,color:"rgb(99,0,10)",label:null},{min:65,max:70,point:null,color:"rgb(252,40,249)",label:null},{min:70,max:75,point:null,color:"rgb(149,89,195)",label:null},{min:75,max:null,point:null,color:"rgb(255,255,255)",label:null}]},{id:"a77a312b-7603-46ef-800b-561d6b79565b",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"T2",unit:"℃",maxValue:36,minValue:-36,scale:1,gradient:null,remark:"2米温度",productType:"NWP",items:[{min:-36,max:null,point:null,color:"rgb(129, 1, 118)",label:""},{min:-32,max:null,point:null,color:"rgb(0, 46, 134)",label:""},{min:-28,max:null,point:null,color:"rgb(26, 91, 161)",label:""},{min:-24,max:null,point:null,color:"rgb(33, 115, 212)",label:""},{min:-20,max:null,point:null,color:"rgb(59, 157, 235)",label:""},{min:-16,max:null,point:null,color:"rgb(112, 210, 250)",label:""},{min:-12,max:null,point:null,color:"rgb(148, 224, 244)",label:""},{min:-8,max:null,point:null,color:"rgb(190, 251, 251)",label:""},{min:-4,max:null,point:null,color:"rgb(240, 255, 252)",label:""},{min:0,max:null,point:null,color:"rgb(224, 253, 218)",label:""},{min:4,max:null,point:null,color:"rgb(202, 244, 196)",label:""},{min:8,max:null,point:null,color:"rgb(193, 255, 204)",label:""},{min:12,max:null,point:null,color:"rgb(254, 254, 166)",label:""},{min:16,max:null,point:null,color:"rgb(244, 239, 192)",label:""},{min:20,max:null,point:null,color:"rgb(249, 222, 176)",label:""},{min:24,max:null,point:null,color:"rgb(251, 177, 124)",label:""},{min:28,max:null,point:null,color:"rgb(230, 144, 144)",label:""},{min:32,max:null,point:null,color:"rgb(255, 85, 0)",label:""},{min:36,max:null,point:null,color:"rgb(220, 32, 41)",label:""}]},{id:"b5651fa4-7182-461a-9afd-a14635addeb3",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"TD2",unit:"℃",maxValue:36,minValue:-36,scale:1,gradient:null,remark:"两米露点温度",productType:"NWP",items:[{min:-36,max:null,point:null,color:"rgb(129, 1, 118)",label:""},{min:-32,max:null,point:null,color:"rgb(0, 46, 134)",label:""},{min:-28,max:null,point:null,color:"rgb(26, 91, 161)",label:""},{min:-24,max:null,point:null,color:"rgb(33, 115, 212)",label:""},{min:-20,max:null,point:null,color:"rgb(59, 157, 235)",label:""},{min:-16,max:null,point:null,color:"rgb(112, 210, 250)",label:""},{min:-12,max:null,point:null,color:"rgb(148, 224, 244)",label:""},{min:-8,max:null,point:null,color:"rgb(190, 251, 251)",label:""},{min:-4,max:null,point:null,color:"rgb(240, 255, 252)",label:""},{min:0,max:null,point:null,color:"rgb(224, 253, 218)",label:""},{min:4,max:null,point:null,color:"rgb(202, 244, 196)",label:""},{min:8,max:null,point:null,color:"rgb(193, 255, 204)",label:""},{min:12,max:null,point:null,color:"rgb(254, 254, 166)",label:""},{min:16,max:null,point:null,color:"rgb(244, 239, 192)",label:""},{min:20,max:null,point:null,color:"rgb(249, 222, 176)",label:""},{min:24,max:null,point:null,color:"rgb(251, 177, 124)",label:""},{min:28,max:null,point:null,color:"rgb(230, 144, 144)",label:""},{min:32,max:null,point:null,color:"rgb(255, 85, 0)",label:""},{min:36,max:null,point:null,color:"rgb(220, 32, 41)",label:""}]},{id:"TOPS",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"TOPS",unit:"km",maxValue:21,minValue:0,scale:null,gradient:null,remark:"回波顶高",productType:"RADAR",items:[{min:0,max:2,point:null,color:"rgb(190,190,190)",label:null},{min:2,max:3,point:null,color:"rgb(118,118,118)",label:null},{min:3,max:5,point:null,color:"rgb(0,224,255)",label:null},{min:5,max:6,point:null,color:"rgb(0,176,255)",label:null},{min:6,max:8,point:null,color:"rgb(0,144,204)",label:null},{min:8,max:9,point:null,color:"rgb(50,0,150)",label:null},{min:9,max:11,point:null,color:"rgb(0,254,144)",label:null},{min:11,max:12,point:null,color:"rgb(0,187,0)",label:null},{min:12,max:14,point:null,color:"rgb(0,239,0)",label:null},{min:14,max:15,point:null,color:"rgb(254,191,0)",label:null},{min:15,max:17,point:null,color:"rgb(255,255,60)",label:null},{min:17,max:18,point:null,color:"rgb(174,0,0)",label:null},{min:18,max:20,point:null,color:"rgb(255,0,0)",label:null},{min:20,max:21,point:null,color:"rgb(255,255,255)",label:null},{min:21,max:null,point:null,color:"rgb(231,0,255)",label:null}]},{id:"V",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"V",unit:"m/s",maxValue:64,minValue:-64,scale:null,gradient:null,remark:"径向速度",productType:"RADAR",items:[{min:-64,max:-62,point:null,color:"rgb(202,253,123)",label:null},{min:-62,max:-57,point:null,color:"rgb(162,202,100)",label:null},{min:-57,max:-52,point:null,color:"rgb(106,137,50)",label:null},{min:-52,max:-47,point:null,color:"rgb(79,96,49)",label:null},{min:-47,max:-42,point:null,color:"rgb(96,157,158)",label:null},{min:-42,max:-37,point:null,color:"rgb(175,195,220)",label:null},{min:-37,max:-32,point:null,color:"rgb(164,238,253)",label:null},{min:-32,max:-27,point:null,color:"rgb(47,224,251)",label:null},{min:-27,max:-20,point:null,color:"rgb(0,134,245)",label:null},{min:-20,max:-15,point:null,color:"rgb(54,38,140)",label:null},{min:-15,max:-10,point:null,color:"rgb(59,249,154)",label:null},{min:-10,max:-5,point:null,color:"rgb(44,183,145)",label:null},{min:-5,max:-1,point:null,color:"rgb(37,139,50)",label:null},{min:-1,max:0,point:null,color:"rgb(203,188,160)",label:null},{min:0,max:1,point:null,color:"rgb(255,255,255)",label:null},{min:1,max:5,point:null,color:"rgb(246,129,57)",label:null},{min:5,max:10,point:null,color:"rgb(255,201,76)",label:null},{min:10,max:15,point:null,color:"rgb(255,251,91)",label:null},{min:15,max:20,point:null,color:"rgb(168,0,28)",label:null},{min:20,max:27,point:null,color:"rgb(204,108,48)",label:null},{min:27,max:32,point:null,color:"rgb(251,0,39)",label:null},{min:32,max:37,point:null,color:"rgb(253,190,201)",label:null},{min:37,max:42,point:null,color:"rgb(253,105,108)",label:null},{min:42,max:47,point:null,color:"rgb(147,64,65)",label:null},{min:47,max:52,point:null,color:"rgb(215,114,210)",label:null},{min:52,max:57,point:null,color:"rgb(253,40,250)",label:null},{min:57,max:62,point:null,color:"rgb(182,71,241)",label:null},{min:62,max:64,point:null,color:"rgb(113,47,149)",label:null},{min:64,max:null,point:null,color:"rgb(137,22,135)",label:null}]},{id:"VAD",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"VAD",unit:"m/s",maxValue:50,minValue:0,scale:null,gradient:null,remark:"速度方位",productType:"RADAR",items:[{min:0,max:5,point:null,color:"rgb(150,150,150)",label:null},{min:5,max:18,point:null,color:"rgb(241,208,231)",label:null},{min:18,max:30,point:null,color:"rgb(162,130,144)",label:null},{min:30,max:41,point:null,color:"rgb(43,166,41)",label:null},{min:41,max:46,point:null,color:"rgb(255,255,127)",label:null},{min:46,max:50,point:null,color:"rgb(170,0,0)",label:null},{min:50,max:null,point:null,color:"rgb(0,0,127)",label:null}]},{id:"VIL",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"VIL",unit:"kg/m^2",maxValue:70,minValue:1,scale:null,gradient:null,remark:"垂直累积液态水含量",productType:"RADAR",items:[{min:1,max:5,point:null,color:"rgb(156,156,156)",label:null},{min:5,max:10,point:null,color:"rgb(118,118,118)",label:null},{min:10,max:15,point:null,color:"rgb(250,170,170)",label:null},{min:15,max:20,point:null,color:"rgb(238,140,140)",label:null},{min:20,max:25,point:null,color:"rgb(201,112,112)",label:null},{min:25,max:30,point:null,color:"rgb(0,251,144)",label:null},{min:30,max:35,point:null,color:"rgb(0,187,0)",label:null},{min:35,max:40,point:null,color:"rgb(255,252,112)",label:null},{min:40,max:45,point:null,color:"rgb(208,208,96)",label:null},{min:45,max:50,point:null,color:"rgb(255,96,96)",label:null},{min:50,max:55,point:null,color:"rgb(252,0,25)",label:null},{min:55,max:60,point:null,color:"rgb(174,0,0)",label:null},{min:60,max:65,point:null,color:"rgb(0,0,255)",label:null},{min:65,max:70,point:null,color:"rgb(255,255,255)",label:null},{min:70,max:null,point:null,color:"rgb(231,0,255)",label:null}]},{id:"76fabf55-8a1c-4933-ace6-97923879d0cd",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"VIS",unit:"KM",maxValue:15,minValue:0,scale:.001,gradient:null,remark:"能见度",productType:"STATION",items:[{min:0,max:null,point:null,color:"rgb(196, 84, 178)",label:""},{min:1,max:null,point:null,color:"rgb(172, 77, 75)",label:""},{min:5,max:null,point:null,color:"rgb(102, 92, 169)",label:""},{min:10,max:null,point:null,color:"rgb(111, 174, 95)",label:""},{min:15,max:null,point:null,color:"rgb(86, 176, 121)",label:""}]},{id:"VWP",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"VWP",unit:"",maxValue:10,minValue:0,scale:null,gradient:null,remark:"风廓线",productType:"RADAR",items:[{min:0,max:2,point:null,color:"rgb(170,255,0)",label:null},{min:2,max:4,point:null,color:"rgb(170,255,127)",label:null},{min:4,max:6,point:null,color:"rgb(170,255,255)",label:null},{min:6,max:8,point:null,color:"rgb(255,255,127)",label:null},{min:8,max:10,point:null,color:"rgb(255,255,0)",label:null},{min:10,max:null,point:null,color:"rgb(255,170,0)",label:null}]},{id:"78475404-1a27-44a6-914c-4860d457ed57",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"WIND",unit:"m/s",maxValue:30,minValue:0,scale:1,gradient:null,remark:"风速",productType:"NWP",items:[{min:0,max:null,point:null,color:"rgb(102, 92, 169)",label:""},{min:3,max:null,point:null,color:"rgb(42, 116, 188)",label:""},{min:5,max:null,point:null,color:"rgb(9, 175, 229)",label:""},{min:10,max:null,point:null,color:"rgb(13, 179, 116)",label:""},{min:15,max:null,point:null,color:"rgb(237, 213, 39)",label:""},{min:20,max:null,point:null,color:"rgb(196, 84, 178)",label:""},{min:30,max:null,point:null,color:"rgb(54, 137, 215)",label:""}]},{id:"AHP",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"AHP",unit:"",maxValue:150,minValue:0,scale:null,gradient:null,remark:null,productType:"RADAR",items:[{min:0,max:.1,point:null,color:"rgb(255,255,255)",label:null},{min:.1,max:1,point:null,color:"rgb(151,222,249)",label:null},{min:1,max:5,point:null,color:"rgb(10,146,219)",label:null},{min:5,max:10,point:null,color:"rgb(18,122,201)",label:null},{min:10,max:20,point:null,color:"rgb(160,200,43)",label:null},{min:20,max:30,point:null,color:"rgb(255,242,0)",label:null},{min:30,max:50,point:null,color:"rgb(250,180,10)",label:null},{min:50,max:70,point:null,color:"rgb(244,103,23)",label:null},{min:70,max:100,point:null,color:"rgb(237,28,36)",label:null},{min:100,max:150,point:null,color:"rgb(236,0,140)",label:null},{min:150,max:null,point:null,color:"rgb(159,67,116)",label:null}]},{id:"2f685afa-1557-4bc4-a916-4a2985cf84c1",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"WI",unit:"m/s",maxValue:48,minValue:0,scale:1,gradient:null,remark:"大风指数",productType:"RADAR",items:[{min:0,max:20,point:null,color:"rgb(228, 234, 206)",label:""},{min:20,max:24,point:null,color:"rgb(206, 227, 238)",label:""},{min:24,max:26,point:null,color:"rgb(181, 202, 255)",label:""},{min:26,max:32,point:null,color:"rgb(127, 151, 255)",label:""},{min:32,max:36,point:null,color:"rgb(171, 207, 99)",label:""},{min:36,max:44,point:null,color:"rgb(232, 245, 158)",label:""},{min:44,max:48,point:null,color:"rgb(255, 209, 33)",label:""},{min:48,max:null,point:null,color:"rgb(246, 144, 13)",label:""}]},{id:"7da262ab-9f3b-48f5-b2ef-bcfb6b7f0129",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"SRH",unit:"m^2/s^2",maxValue:2400,minValue:-1600,scale:1,gradient:null,remark:"风暴相对螺旋度",productType:"RADAR",items:[{min:-1600,max:-1200,point:null,color:"rgb(66, 106, 175)",label:""},{min:-1200,max:-800,point:null,color:"rgb(101, 157, 201)",label:""},{min:-800,max:-400,point:null,color:"rgb(129, 183, 215)",label:""},{min:-400,max:0,point:null,color:"rgb(176, 219, 235)",label:""},{min:0,max:400,point:null,color:"rgb(241, 235, 197)",label:""},{min:400,max:800,point:null,color:"rgb(254, 207, 128)",label:""},{min:800,max:1200,point:null,color:"rgb(251, 163, 91)",label:""},{min:1200,max:1600,point:null,color:"rgb(246, 124, 73)",label:""},{min:1600,max:2e3,point:null,color:"rgb(255, 90, 59)",label:""},{min:2e3,max:2400,point:null,color:"rgb(221, 56, 43)",label:""},{min:2400,max:null,point:null,color:"rgb(193, 27, 39)",label:""}]},{id:"379bc585-9bb8-41dc-8025-508aabbcea09",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"WINDF",unit:"m/s",maxValue:24.5,minValue:0,scale:1,gradient:!1,remark:"短临外推风力产品",productType:"FORECAST",items:[{min:3.4,max:5.5,point:null,color:"rgb(255,255,255)",label:""},{min:5.5,max:8,point:null,color:"rgb(138, 55, 244)",label:""},{min:8,max:10.8,point:null,color:"rgb(1, 37, 230)",label:""},{min:10.8,max:13.9,point:null,color:"rgb(30, 186, 142)",label:""},{min:13.9,max:17.2,point:null,color:"rgb(255, 255, 72)",label:""},{min:17.2,max:20.8,point:null,color:"rgb(251, 203, 58)",label:""},{min:20.8,max:24.5,point:null,color:"rgb(160, 0, 14)",label:""},{min:24.5,max:null,point:null,color:"rgb(248, 144, 147)",label:""}]},{id:"a3dc1bc8-5302-4062-906b-56b84874189e",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"CI",unit:null,maxValue:.9,minValue:0,scale:1,gradient:null,remark:"对流指数",productType:"RADAR",items:[{min:0,max:.1,point:null,color:"rgb(35, 236, 235)",label:""},{min:.1,max:.2,point:null,color:"rgb(19, 160, 220)",label:""},{min:.2,max:.3,point:null,color:"rgb(0, 41, 240)",label:""},{min:.3,max:.4,point:null,color:"rgb(43, 252, 62)",label:""},{min:.4,max:.5,point:null,color:"rgb(34, 197, 49)",label:""},{min:.5,max:.6,point:null,color:"rgb(24, 142, 35)",label:""},{min:.6,max:.7,point:null,color:"rgb(255, 252, 66)",label:""},{min:.7,max:.8,point:null,color:"rgb(229, 189, 51)",label:""},{min:.8,max:.9,point:null,color:"rgb(253, 141, 42)",label:""},{min:.9,max:null,point:null,color:"rgb(252, 0, 25)",label:""}]},{id:"b267b3ee-ebea-4a90-911d-799f78e0c583",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"WINDW",unit:"m/s",maxValue:34,minValue:-34,scale:1,gradient:null,remark:"垂直风速",productType:"RADAR",items:[{min:-34,max:-32,point:null,color:"rgb(7, 30, 70)",label:""},{min:-32,max:-28,point:null,color:"rgb(7, 47, 107)",label:""},{min:-28,max:-24,point:null,color:"rgb(6, 87, 156)",label:""},{min:-24,max:-20,point:null,color:"rgb(32, 113, 181)",label:""},{min:-20,max:-16,point:null,color:"rgb(33, 125, 202)",label:""},{min:-16,max:-12,point:null,color:"rgb(56, 142, 225)",label:""},{min:-12,max:-8,point:null,color:"rgb(84, 164, 242)",label:""},{min:-8,max:-4,point:null,color:"rgb(138, 196, 245)",label:""},{min:-4,max:-1,point:null,color:"rgb(218, 240, 255)",label:""},{min:-1,max:0,point:null,color:"rgb(255, 255, 255)",label:""},{min:0,max:1,point:null,color:"rgb(255, 224, 223)",label:""},{min:1,max:4,point:null,color:"rgb(252, 186, 170)",label:""},{min:4,max:8,point:null,color:"rgb(252, 146, 114)",label:""},{min:8,max:16,point:null,color:"rgb(251, 105, 74)",label:""},{min:16,max:20,point:null,color:"rgb(240, 60, 42)",label:""},{min:20,max:24,point:null,color:"rgb(204, 23, 31)",label:""},{min:24,max:28,point:null,color:"rgb(166, 15, 19)",label:""},{min:28,max:32,point:null,color:"rgb(120, 10, 16)",label:""},{min:32,max:34,point:null,color:"rgb(95, 0, 0)",label:""},{min:34,max:null,point:null,color:"rgb(122, 22, 140)",label:""}]},{id:"0f132d83-b662-4a3a-81d9-0aa3aa23b122",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"QSE",unit:"mm",maxValue:40,minValue:0,scale:1,gradient:null,remark:"定量降雪估计",productType:"RADAR",items:[{min:0,max:.1,point:null,color:"rgb(245, 245, 245)",label:""},{min:.1,max:.2,point:null,color:"rgb(235, 235, 235)",label:""},{min:.2,max:.5,point:null,color:"rgb(225, 225, 225)",label:""},{min:.5,max:1,point:null,color:"rgb(215, 215, 215)",label:""},{min:1,max:1.5,point:null,color:"rgb(181, 206, 231)",label:""},{min:1.5,max:2,point:null,color:"rgb(156, 189, 222)",label:""},{min:2,max:3,point:null,color:"rgb(132, 173, 214)",label:""},{min:3,max:5,point:null,color:"rgb(107, 156, 198)",label:""},{min:5,max:7,point:null,color:"rgb(82, 140, 189)",label:""},{min:7,max:10,point:null,color:"rgb(57, 119, 181)",label:""},{min:10,max:15,point:null,color:"rgb(33, 103, 173)",label:""},{min:15,max:20,point:null,color:"rgb(24, 78, 132)",label:""},{min:20,max:30,point:null,color:"rgb(19, 50, 109)",label:""},{min:30,max:40,point:null,color:"rgb(15, 50, 89)",label:""},{min:40,max:null,point:null,color:"rgb(7, 24, 42)",label:""}]},{id:"d053b1cf-f10f-44c7-8dbf-5e6e1fc660f3",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"OHS",unit:"mm",maxValue:40,minValue:0,scale:1,gradient:null,remark:"一小时累积降雪量",productType:"RADAR",items:[{min:0,max:.1,point:null,color:"rgb(245, 245, 245)",label:""},{min:.1,max:.2,point:null,color:"rgb(235, 235, 235)",label:""},{min:.2,max:.5,point:null,color:"rgb(225, 225, 225)",label:""},{min:.5,max:1,point:null,color:"rgb(215, 215, 215)",label:""},{min:1,max:1.5,point:null,color:"rgb(181, 206, 231)",label:""},{min:1.5,max:2,point:null,color:"rgb(156, 189, 222)",label:""},{min:2,max:3,point:null,color:"rgb(132, 173, 214)",label:""},{min:3,max:5,point:null,color:"rgb(107, 156, 198)",label:""},{min:5,max:7,point:null,color:"rgb(82, 140, 189)",label:""},{min:7,max:10,point:null,color:"rgb(57, 119, 181)",label:""},{min:10,max:15,point:null,color:"rgb(33, 103, 173)",label:""},{min:15,max:20,point:null,color:"rgb(24, 78, 132)",label:""},{min:20,max:30,point:null,color:"rgb(19, 50, 109)",label:""},{min:30,max:40,point:null,color:"rgb(15, 50, 89)",label:""},{min:40,max:null,point:null,color:"rgb(7, 24, 42)",label:""}]},{id:"bdc51549-4e66-48ba-9ee0-cd0fc4d0a749",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"THS",unit:"mm",maxValue:40,minValue:0,scale:1,gradient:null,remark:"三小时累积降雪量",productType:"RADAR",items:[{min:0,max:.1,point:null,color:"rgb(245, 245, 245)",label:""},{min:.1,max:.2,point:null,color:"rgb(235, 235, 235)",label:""},{min:.2,max:.5,point:null,color:"rgb(225, 225, 225)",label:""},{min:.5,max:1,point:null,color:"rgb(215, 215, 215)",label:""},{min:1,max:1.5,point:null,color:"rgb(181, 206, 231)",label:""},{min:1.5,max:2,point:null,color:"rgb(156, 189, 222)",label:""},{min:2,max:3,point:null,color:"rgb(132, 173, 214)",label:""},{min:3,max:5,point:null,color:"rgb(107, 156, 198)",label:""},{min:5,max:7,point:null,color:"rgb(82, 140, 189)",label:""},{min:7,max:10,point:null,color:"rgb(57, 119, 181)",label:""},{min:10,max:15,point:null,color:"rgb(33, 103, 173)",label:""},{min:15,max:20,point:null,color:"rgb(24, 78, 132)",label:""},{min:20,max:30,point:null,color:"rgb(19, 50, 109)",label:""},{min:30,max:40,point:null,color:"rgb(15, 50, 89)",label:""},{min:40,max:null,point:null,color:"rgb(7, 24, 42)",label:""}]},{id:"CR",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"CR",unit:"dBZ",maxValue:75,minValue:5,scale:null,gradient:null,remark:"组合反射率",productType:"RADAR",items:[{min:5,max:10,point:null,color:"rgb(35,236,235)",label:null},{min:10,max:15,point:null,color:"rgb(19,160,220)",label:null},{min:15,max:20,point:null,color:"rgb(0,41,240)",label:null},{min:20,max:25,point:null,color:"rgb(43,252,62)",label:null},{min:25,max:30,point:null,color:"rgb(34,197,49)",label:null},{min:30,max:35,point:null,color:"rgb(24,142,35)",label:null},{min:35,max:40,point:null,color:"rgb(255,252,66)",label:null},{min:40,max:45,point:null,color:"rgb(229,189,51)",label:null},{min:45,max:50,point:null,color:"rgb(253,141,42)",label:null},{min:50,max:55,point:null,color:"rgb(252,0,25)",label:null},{min:55,max:60,point:null,color:"rgb(163,0,17)",label:null},{min:60,max:65,point:null,color:"rgb(99,0,10)",label:null},{min:65,max:70,point:null,color:"rgb(252,40,249)",label:null},{min:70,max:75,point:null,color:"rgb(149,89,195)",label:null},{min:75,max:null,point:null,color:"rgb(255,255,255)",label:null}]},{id:"1b1c7deb-3cb0-4158-9e37-2c622ea5e721",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"QSD",unit:"cm",maxValue:40,minValue:0,scale:1,gradient:null,remark:"瞬时新增积雪量",productType:"RADAR",items:[{min:0,max:.1,point:null,color:"rgb(245, 245, 245)",label:""},{min:.1,max:.2,point:null,color:"rgb(235, 235, 235)",label:""},{min:.2,max:.5,point:null,color:"rgb(225, 225, 225)",label:""},{min:.5,max:1,point:null,color:"rgb(215, 215, 215)",label:""},{min:1,max:1.5,point:null,color:"rgb(181, 206, 231)",label:""},{min:1.5,max:2,point:null,color:"rgb(156, 189, 222)",label:""},{min:2,max:3,point:null,color:"rgb(132, 173, 214)",label:""},{min:3,max:5,point:null,color:"rgb(107, 156, 198)",label:""},{min:5,max:7,point:null,color:"rgb(82, 140, 189)",label:""},{min:7,max:10,point:null,color:"rgb(57, 119, 181)",label:""},{min:10,max:15,point:null,color:"rgb(33, 103, 173)",label:""},{min:15,max:20,point:null,color:"rgb(24, 78, 132)",label:""},{min:20,max:30,point:null,color:"rgb(19, 50, 109)",label:""},{min:30,max:40,point:null,color:"rgb(15, 50, 89)",label:""},{min:40,max:null,point:null,color:"rgb(7, 24, 42)",label:""}]},{id:"a7a916a3-8597-4848-8ae9-c4d2ea10bab1",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"THD",unit:"cm",maxValue:40,minValue:0,scale:1,gradient:null,remark:"三小时累积积雪量",productType:"RADAR",items:[{min:0,max:.1,point:null,color:"rgb(245, 245, 245)",label:""},{min:.1,max:.2,point:null,color:"rgb(235, 235, 235)",label:""},{min:.2,max:.5,point:null,color:"rgb(225, 225, 225)",label:""},{min:.5,max:1,point:null,color:"rgb(215, 215, 215)",label:""},{min:1,max:1.5,point:null,color:"rgb(181, 206, 231)",label:""},{min:1.5,max:2,point:null,color:"rgb(156, 189, 222)",label:""},{min:2,max:3,point:null,color:"rgb(132, 173, 214)",label:""},{min:3,max:5,point:null,color:"rgb(107, 156, 198)",label:""},{min:5,max:7,point:null,color:"rgb(82, 140, 189)",label:""},{min:7,max:10,point:null,color:"rgb(57, 119, 181)",label:""},{min:10,max:15,point:null,color:"rgb(33, 103, 173)",label:""},{min:15,max:20,point:null,color:"rgb(24, 78, 132)",label:""},{min:20,max:30,point:null,color:"rgb(19, 50, 109)",label:""},{min:30,max:40,point:null,color:"rgb(15, 50, 89)",label:""},{min:40,max:null,point:null,color:"rgb(7, 24, 42)",label:""}]},{id:"b59a27fc-b0f0-4458-a13c-c1137b54522b",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"OHD",unit:"cm",maxValue:40,minValue:0,scale:1,gradient:null,remark:"一小时累积积雪量",productType:"RADAR",items:[{min:0,max:.1,point:null,color:"rgb(245, 245, 245)",label:""},{min:.1,max:.2,point:null,color:"rgb(235, 235, 235)",label:""},{min:.2,max:.5,point:null,color:"rgb(225, 225, 225)",label:""},{min:.5,max:1,point:null,color:"rgb(215, 215, 215)",label:""},{min:1,max:1.5,point:null,color:"rgb(181, 206, 231)",label:""},{min:1.5,max:2,point:null,color:"rgb(156, 189, 222)",label:""},{min:2,max:3,point:null,color:"rgb(132, 173, 214)",label:""},{min:3,max:5,point:null,color:"rgb(107, 156, 198)",label:""},{min:5,max:7,point:null,color:"rgb(82, 140, 189)",label:""},{min:7,max:10,point:null,color:"rgb(57, 119, 181)",label:""},{min:10,max:15,point:null,color:"rgb(33, 103, 173)",label:""},{min:15,max:20,point:null,color:"rgb(24, 78, 132)",label:""},{min:20,max:30,point:null,color:"rgb(19, 50, 109)",label:""},{min:30,max:40,point:null,color:"rgb(15, 50, 89)",label:""},{min:40,max:null,point:null,color:"rgb(7, 24, 42)",label:""}]},{id:"e262c8ac-ed54-4831-9b6c-7b292ab8244b",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"HCL",unit:"",maxValue:11,minValue:0,scale:null,gradient:null,remark:"水凝物分类",productType:"RADAR",items:[{min:-999,max:1,point:null,color:"rgb(0,255,46)",label:"小雨"},{min:1,max:2,point:null,color:"rgb(0,204,100)",label:"中雨"},{min:2,max:3,point:null,color:"rgb(2,100,26)",label:"大雨"},{min:3,max:4,point:null,color:"rgb(101,129,28)",label:"大雨滴"},{min:4,max:5,point:null,color:"rgb(253,1,0)",label:"冰雹"},{min:5,max:6,point:null,color:"rgb(255,202,129)",label:"雨加雹"},{min:6,max:7,point:null,color:"rgb(255,0,250)",label:"霰/雹"},{min:7,max:8,point:null,color:"rgb(0,0,251)",label:"干雪"},{min:8,max:9,point:null,color:"rgb(25,25,134)",label:"湿雪"},{min:9,max:10,point:null,color:"rgb(141,57,242)",label:"H-冰晶"},{min:10,max:11,point:null,color:"rgb(117,113,233)",label:"V-冰晶"},{min:11,max:null,point:null,color:"rgb(204,204,192)",label:"地物杂波"}]},{id:"26d9b740-cc61-4807-b879-ce7a4f59f723",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"Z",unit:"dBZ",maxValue:75,minValue:5,scale:null,gradient:null,remark:"反射率",productType:"RADAR",items:[{min:5,max:10,point:null,color:"rgb(35,236,235)",label:null},{min:10,max:15,point:null,color:"rgb(19,160,220)",label:null},{min:15,max:20,point:null,color:"rgb(0,41,240)",label:null},{min:20,max:25,point:null,color:"rgb(43,252,62)",label:null},{min:25,max:30,point:null,color:"rgb(34,197,49)",label:null},{min:30,max:35,point:null,color:"rgb(24,142,35)",label:null},{min:35,max:40,point:null,color:"rgb(255,252,66)",label:null},{min:40,max:45,point:null,color:"rgb(229,189,51)",label:null},{min:45,max:50,point:null,color:"rgb(253,141,42)",label:null},{min:50,max:55,point:null,color:"rgb(252,0,25)",label:null},{min:55,max:60,point:null,color:"rgb(163,0,17)",label:null},{min:60,max:65,point:null,color:"rgb(99,0,10)",label:null},{min:65,max:70,point:null,color:"rgb(252,40,249)",label:null},{min:70,max:75,point:null,color:"rgb(149,89,195)",label:null},{min:75,max:null,point:null,color:"rgb(255,255,255)",label:null}]},{id:"e84ed56b-d643-4f65-9820-75b361eab5bb",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"SNRH",unit:"dB",maxValue:10,minValue:0,scale:null,gradient:null,remark:null,productType:"RADAR",items:[{min:0,max:1,point:null,color:"rgb(0,0,0)",label:null},{min:1,max:2,point:null,color:"rgb(170,0,0)",label:null},{min:2,max:3,point:null,color:"rgb(0,85,0)",label:null},{min:3,max:4,point:null,color:"rgb(170,85,0)",label:null},{min:4,max:5,point:null,color:"rgb(255,255,127)",label:null},{min:5,max:6,point:null,color:"rgb(170,170,0)",label:null},{min:6,max:7,point:null,color:"rgb(0,255,0)",label:null},{min:7,max:8,point:null,color:"rgb(85,85,255)",label:null},{min:8,max:9,point:null,color:"rgb(0,0,127)",label:null},{min:9,max:10,point:null,color:"rgb(170,0,127)",label:null},{min:10,max:null,point:null,color:"rgb(0,85,127)",label:null}]},{id:"8ea9b3bb-26e4-4f93-9dfb-6164bf1c1c2e",groupId:"66bcaa69938cbc67fb027cb0",name:"THP",unit:"mm",maxValue:203.2,minValue:0,scale:null,gradient:null,remark:"3小时降雨累计",productType:"RADAR",items:[{min:.1,max:2.54,point:null,color:"rgb(170,170,170)",label:null},{min:2.54,max:6.35,point:null,color:"rgb(118,118,118)",label:null},{min:6.35,max:12.7,point:null,color:"rgb(0,255,255)",label:null},{min:12.7,max:19.05,point:null,color:"rgb(0,175,175)",label:null},{min:19.05,max:25.4,point:null,color:"rgb(0,255,0)",label:null},{min:25.4,max:31.75,point:null,color:"rgb(0,143,0)",label:null},{min:31.75,max:38.1,point:null,color:"rgb(255,0,255)",label:null},{min:38.1,max:44.45,point:null,color:"rgb(175,50,125)",label:null},{min:44.45,max:50.8,point:null,color:"rgb(0,0,255)",label:null},{min:50.8,max:63.5,point:null,color:"rgb(50,0,150)",label:null},{min:63.5,max:76.2,point:null,color:"rgb(255,255,0)",label:null},{min:76.2,max:101.6,point:null,color:"rgb(255,170,0)",label:null},{min:101.6,max:152.4,point:null,color:"rgb(255,0,0)",label:null},{min:152.4,max:203.2,point:null,color:"rgb(174,0,0)",label:null},{min:203.2,max:null,point:null,color:"rgb(255,255,255)",label:null}]},{id:"bcbadf6c-4507-4ca5-9806-cb120a880def",groupId:"66bcaa69938cbc67fb027cb0",name:"RANLV",unit:"",maxValue:2,minValue:0,scale:null,gradient:null,remark:null,productType:null,items:[{min:-999,max:1,point:null,color:"rgb(0,255,0)",label:"小雨"},{min:1,max:2,point:null,color:"rgb(255,255,0)",label:"中雨"},{min:2,max:9999,point:null,color:"rgb(255,0,0)",label:"大雨"}]},{id:"6fc02a9b-94d1-4b46-965a-01aee8955714",groupId:"66bcaa69938cbc67fb027cb0",name:"ALA",unit:"dBZ",maxValue:100,minValue:0,scale:1,gradient:null,remark:null,productType:"OTHER",items:[{min:15,max:25,point:null,color:"rgb(0, 229, 255)",label:null},{min:25,max:35,point:null,color:"rgb(255, 209, 0)",label:null},{min:35,max:null,point:null,color:"rgb(255, 39, 0)",label:null}]},{id:"d663dc16-5dae-4fa8-9d9f-241c03cfe1ed",groupId:"66bcaa69938cbc67fb027cb0",name:"RCR",unit:"",maxValue:9999,minValue:20,scale:null,gradient:null,remark:null,productType:null,items:[{min:20,max:30,point:null,color:"rgb(0,255,0)",label:"小雨"},{min:30,max:50,point:null,color:"rgb(255,255,0)",label:"中雨"},{min:50,max:9999,point:null,color:"rgb(255,0,0)",label:"大雨"}]},{id:"a67f5524-7bed-4fa3-9062-20fabd150160",groupId:"66bcaa69938cbc67fb027cb0",name:"RCRN",unit:"",maxValue:9999,minValue:20,scale:null,gradient:null,remark:null,productType:null,items:[{min:5,max:20,point:null,color:"rgb(118, 230, 232)",label:null},{min:20,max:30,point:null,color:"rgb(0,255,0)",label:""},{min:30,max:50,point:null,color:"rgb(255,255,0)",label:""},{min:50,max:9999,point:null,color:"rgb(255,0,0)",label:""}]},{id:"6928e78a-ef8f-499e-806b-ed8fb3c94a99",groupId:"672c72d23fc19a7818f89da3",name:"GOP",unit:"",maxValue:2,minValue:0,scale:null,gradient:null,remark:null,productType:null,items:[{min:-999,max:2,point:null,color:"rgb(0,255,0)",label:"小雨"},{min:2,max:3,point:null,color:"rgb(255,255,0)",label:"中雨"},{min:3,max:9999,point:null,color:"rgb(255,0,0)",label:"大雨"}]},{id:"CC",groupId:"672c72d23fc19a7818f89da3",name:"CC",unit:"",maxValue:.99,minValue:0,scale:null,gradient:null,remark:"相关系数",productType:"RADAR",items:[{min:0,max:.1,point:null,color:"rgb(0,73,249)",label:null},{min:.1,max:.3,point:null,color:"rgb(36,239,238)",label:null},{min:.3,max:.5,point:null,color:"rgb(27,185,189)",label:null},{min:.5,max:.6,point:null,color:"rgb(20,130,124)",label:null},{min:.6,max:.7,point:null,color:"rgb(23,135,65)",label:null},{min:.7,max:.8,point:null,color:"rgb(31,180,61)",label:null},{min:.8,max:.85,point:null,color:"rgb(37,215,56)",label:null},{min:.85,max:.9,point:null,color:"rgb(43,253,62)",label:null},{min:.9,max:.92,point:null,color:"rgb(255,253,87)",label:null},{min:.92,max:.94,point:null,color:"rgb(255,237,63)",label:null},{min:.94,max:.95,point:null,color:"rgb(255,195,53)",label:null},{min:.95,max:.96,point:null,color:"rgb(253,161,46)",label:null},{min:.96,max:.97,point:null,color:"rgb(254,112,37)",label:null},{min:.97,max:.98,point:null,color:"rgb(253,32,27)",label:null},{min:.98,max:.99,point:null,color:"rgb(190,0,19)",label:null},{min:.99,max:null,point:null,color:"rgb(209,25,165)",label:null}]},{id:"W",groupId:"672c72d23fc19a7818f89da3",name:"W",unit:"m/s",maxValue:14,minValue:0,scale:null,gradient:null,remark:"基本谱宽",productType:"RADAR",items:[{min:0,max:1,point:null,color:"rgb(46,59,249)",label:null},{min:1,max:2,point:null,color:"rgb(0,103,250)",label:null},{min:2,max:3,point:null,color:"rgb(37,163,251)",label:null},{min:3,max:4,point:null,color:"rgb(54,218,253)",label:null},{min:4,max:5,point:null,color:"rgb(65,255,221)",label:null},{min:5,max:6,point:null,color:"rgb(68,254,152)",label:null},{min:6,max:7,point:null,color:"rgb(70,253,83)",label:null},{min:7,max:8,point:null,color:"rgb(145,253,64)",label:null},{min:8,max:9,point:null,color:"rgb(197,253,65)",label:null},{min:9,max:10,point:null,color:"rgb(238,253,66)",label:null},{min:10,max:11,point:null,color:"rgb(242,198,58)",label:null},{min:11,max:12,point:null,color:"rgb(254,148,43)",label:null},{min:12,max:13,point:null,color:"rgb(254,103,35)",label:null},{min:13,max:14,point:null,color:"rgb(253,49,28)",label:null},{min:14,max:null,point:null,color:"rgb(253,7,114)",label:null}]},{id:"5ecb0f04-dbe5-4a3c-b96c-9244d3fda2cd",groupId:"672c72d23fc19a7818f89da3",name:"WINDS",unit:"m/s",maxValue:32,minValue:0,scale:1,gradient:null,remark:"风速",productType:"RADAR",items:[{min:0,max:2,point:null,color:"rgb(92, 246, 255)",label:""},{min:2,max:4,point:null,color:"rgb(30, 225, 255)",label:""},{min:4,max:6,point:null,color:"rgb(81, 169, 255)",label:""},{min:6,max:8,point:null,color:"rgb(30, 137, 254)",label:""},{min:8,max:10,point:null,color:"rgb(156, 207, 49)",label:""},{min:10,max:12,point:null,color:"rgb(0, 176, 88)",label:""},{min:12,max:14,point:null,color:"rgb(45, 139, 87)",label:""},{min:14,max:16,point:null,color:"rgb(19, 101, 193)",label:""},{min:16,max:18,point:null,color:"rgb(0, 57, 156)",label:""},{min:18,max:20,point:null,color:"rgb(255, 191, 107)",label:""},{min:20,max:22,point:null,color:"rgb(255, 225, 50)",label:""},{min:22,max:24,point:null,color:"rgb(255, 121, 4)",label:""},{min:24,max:26,point:null,color:"rgb(255, 0, 0)",label:""},{min:26,max:28,point:null,color:"rgb(186, 38, 31)",label:""},{min:28,max:32,point:null,color:"rgb(140, 94, 233)",label:""},{min:32,max:null,point:null,color:"rgb(252, 2, 228)",label:""}]},{id:"PHIDP",groupId:"672c72d23fc19a7818f89da3",name:"PHIDP",unit:"deg",maxValue:360,minValue:0,scale:null,gradient:null,remark:"差分传播相位",productType:"RADAR",items:[{min:0,max:24,point:null,color:"rgb(0,53,173)",label:null},{min:24,max:48,point:null,color:"rgb(36,239,238)",label:null},{min:48,max:72,point:null,color:"rgb(27,185,189)",label:null},{min:72,max:96,point:null,color:"rgb(20,130,124)",label:null},{min:96,max:120,point:null,color:"rgb(23,135,65)",label:null},{min:120,max:144,point:null,color:"rgb(31,180,61)",label:null},{min:144,max:168,point:null,color:"rgb(37,215,56)",label:null},{min:168,max:192,point:null,color:"rgb(43,253,62)",label:null},{min:192,max:216,point:null,color:"rgb(255,253,87)",label:null},{min:216,max:240,point:null,color:"rgb(255,237,63)",label:null},{min:240,max:264,point:null,color:"rgb(255,195,53)",label:null},{min:264,max:288,point:null,color:"rgb(254,162,46)",label:null},{min:288,max:312,point:null,color:"rgb(254,112,37)",label:null},{min:312,max:336,point:null,color:"rgb(253,32,27)",label:null},{min:336,max:360,point:null,color:"rgb(190,0,19)",label:null},{min:360,max:null,point:null,color:"rgb(209,25,165)",label:null}]},{id:"ccc8654e-8f14-44df-b6bb-c2f1487d7446",groupId:"672c72d23fc19a7818f89da3",name:"OHP",unit:"mm",maxValue:203.2,minValue:0,scale:null,gradient:null,remark:"1小时降水累计",productType:"RADAR",items:[{min:.1,max:2.54,point:null,color:"rgb(170,170,170)",label:null},{min:2.54,max:6.35,point:null,color:"rgb(118,118,118)",label:null},{min:6.35,max:12.7,point:null,color:"rgb(0,255,255)",label:null},{min:12.7,max:19.05,point:null,color:"rgb(0,175,175)",label:null},{min:19.05,max:25.4,point:null,color:"rgb(0,255,0)",label:null},{min:25.4,max:31.75,point:null,color:"rgb(0,143,0)",label:null},{min:31.75,max:38.1,point:null,color:"rgb(255,0,255)",label:null},{min:38.1,max:44.45,point:null,color:"rgb(175,50,125)",label:null},{min:44.45,max:50.8,point:null,color:"rgb(0,0,255)",label:null},{min:50.8,max:63.5,point:null,color:"rgb(50,0,150)",label:null},{min:63.5,max:76.2,point:null,color:"rgb(255,255,0)",label:null},{min:76.2,max:101.6,point:null,color:"rgb(255,170,0)",label:null},{min:101.6,max:152.4,point:null,color:"rgb(255,0,0)",label:null},{min:152.4,max:203.2,point:null,color:"rgb(174,0,0)",label:null},{min:203.2,max:null,point:null,color:"rgb(255,255,255)",label:null}]},{id:"1c0a147d-d7ea-41f3-a6b9-f8fd46da58c8",groupId:"672c72d23fc19a7818f89da3",name:"TI",unit:"m^(2/3)/s",maxValue:9999,minValue:0,scale:1,gradient:null,remark:null,productType:"RADAR",items:[{min:0,max:.1,point:null,color:"rgb(192, 192, 192)",label:null},{min:.1,max:.4,point:null,color:"rgb(0, 255, 255)",label:null},{min:.4,max:.7,point:null,color:"rgb(255, 255, 0)",label:null},{min:.7,max:9999,point:null,color:"rgb(255, 0, 0)",label:null}]},{id:"282816d5-8a1e-405e-9bea-b9e29beac15b",groupId:"672c72d23fc19a7818f89da3",name:"SMP",unit:"mm",maxValue:10,minValue:1,scale:1,gradient:null,remark:"6分钟雨量",productType:"RADAR",items:[{min:0,max:.02,point:null,color:"rgb(205, 244, 206)",label:""},{min:.02,max:.3,point:null,color:"rgb(170, 248, 164)",label:""},{min:.3,max:1.2,point:null,color:"rgb(69, 245, 69)",label:""},{min:1.2,max:2.5,point:null,color:"rgb(111, 181, 251)",label:""},{min:2.5,max:4.5,point:null,color:"rgb(71, 56, 250)",label:""},{min:4.5,max:7,point:null,color:"rgb(198, 61, 247)",label:""},{min:7,max:null,point:null,color:"rgb(167, 56, 133)",label:""}]},{id:"0eb66b4f-c6f0-4a6a-bf65-7640da83b22d",groupId:"672c72d23fc19a7818f89da3",name:"WIND10",unit:"m/s",maxValue:30,minValue:0,scale:1,gradient:null,remark:null,productType:"NWP",items:[{min:0,max:3,point:null,color:"rgb(102, 92, 169)",label:null},{min:3,max:5,point:null,color:"rgb(42, 116, 188)",label:null},{min:5,max:10,point:null,color:"rgb(9, 175, 229)",label:null},{min:10,max:15,point:null,color:"rgb(13, 179, 116)",label:null},{min:15,max:20,point:null,color:"rgb(237, 213, 39)",label:null},{min:20,max:30,point:null,color:"rgb(196, 84, 178)",label:null},{min:30,max:null,point:null,color:"rgb(54, 137, 215)",label:null}]},{id:"3bc78549-b6cb-4a2e-b40e-e43ba8de23b2",groupId:"67821566c7173439a2634e6f",name:"AP1H",unit:"mm",maxValue:200,minValue:0,scale:null,gradient:null,remark:"1小时雨量",productType:"NWP",items:[{min:0,max:.5,point:null,color:"rgb(170,170,170)",label:null},{min:.5,max:1,point:null,color:"rgb(118,118,118)",label:null},{min:1,max:2.5,point:null,color:"rgb(0,255,255)",label:null},{min:2.5,max:5,point:null,color:"rgb(0,175,175)",label:null},{min:5,max:10,point:null,color:"rgb(0,255,0)",label:null},{min:10,max:15,point:null,color:"rgb(0,143,0)",label:null},{min:15,max:20,point:null,color:"rgb(255,0,255)",label:null},{min:20,max:30,point:null,color:"rgb(175,50,125)",label:null},{min:30,max:40,point:null,color:"rgb(0,0,255)",label:null},{min:40,max:50,point:null,color:"rgb(50,0,150)",label:null},{min:50,max:60,point:null,color:"rgb(255,255,0)",label:null},{min:60,max:80,point:null,color:"rgb(255,170,0)",label:null},{min:80,max:100,point:null,color:"rgb(255, 101, 0)",label:null},{min:100,max:150,point:null,color:"rgb(255,0,0)",label:null},{min:150,max:200,point:null,color:"rgb(174,0,0)",label:null},{min:200,max:null,point:null,color:"rgb(255,255,255)",label:null}]},{id:"a3ae18d3-860c-48b8-8db5-51b96ffbad7e",groupId:"67821566c7173439a2634e6f",name:"AP3H",unit:"mm",maxValue:200,minValue:0,scale:null,gradient:null,remark:"3小时雨量",productType:"NWP",items:[{min:0,max:.5,point:null,color:"rgb(170,170,170)",label:null},{min:.5,max:1,point:null,color:"rgb(118,118,118)",label:null},{min:1,max:2.5,point:null,color:"rgb(0,255,255)",label:null},{min:2.5,max:5,point:null,color:"rgb(0,175,175)",label:null},{min:5,max:10,point:null,color:"rgb(0,255,0)",label:null},{min:10,max:15,point:null,color:"rgb(0,143,0)",label:null},{min:15,max:20,point:null,color:"rgb(255,0,255)",label:null},{min:20,max:30,point:null,color:"rgb(175,50,125)",label:null},{min:30,max:40,point:null,color:"rgb(0,0,255)",label:null},{min:40,max:50,point:null,color:"rgb(50,0,150)",label:null},{min:50,max:60,point:null,color:"rgb(255,255,0)",label:null},{min:60,max:80,point:null,color:"rgb(255,170,0)",label:null},{min:80,max:100,point:null,color:"rgb(255, 101, 0)",label:null},{min:100,max:150,point:null,color:"rgb(255,0,0)",label:null},{min:150,max:200,point:null,color:"rgb(174,0,0)",label:null},{min:200,max:null,point:null,color:"rgb(255,255,255)",label:null}]},{id:"5b0944f7-ccfa-415a-b6a7-f6dd2ae50d66",groupId:"67821566c7173439a2634e6f",name:"EC_r_multiple",unit:"%",maxValue:100,minValue:0,scale:1,gradient:null,remark:"相对湿度",productType:"OTHER",items:[{min:0,max:10,point:null,color:"rgb(156, 143, 82)",label:null},{min:10,max:20,point:null,color:"rgb(159, 146, 81)",label:null},{min:20,max:30,point:null,color:"rgb(162, 148, 83)",label:null},{min:30,max:40,point:null,color:"rgb(160, 146, 79)",label:null},{min:40,max:50,point:null,color:"rgb(161, 147, 77)",label:null},{min:50,max:60,point:null,color:"rgb(180, 169, 117)",label:null},{min:60,max:70,point:null,color:"rgb(194, 188, 160)",label:null},{min:70,max:80,point:null,color:"rgb(206, 206, 206)",label:null},{min:80,max:90,point:null,color:"rgb(226, 226, 226)",label:null},{min:90,max:100,point:null,color:"rgb(241, 241, 241)",label:null},{min:100,max:null,point:null,color:"rgb(255, 255, 255)",label:null}]},{id:"50f8f4db-2589-43f2-bac3-c527cb24b9ce",groupId:"67821566c7173439a2634e6f",name:"EC_t2m_single",unit:"℃",maxValue:50,minValue:-40,scale:1,gradient:null,remark:"2米气温",productType:"OTHER",items:[{min:-40,max:-30,point:null,color:"rgb(226, 226, 226)",label:null},{min:-30,max:-20,point:null,color:"rgb(244, 166, 244)",label:null},{min:-20,max:-15,point:null,color:"rgb(144, 25, 144)",label:null},{min:-15,max:-10,point:null,color:"rgb(42, 30, 105)",label:null},{min:-10,max:-5,point:null,color:"rgb(87, 81, 173)",label:null},{min:-5,max:0,point:null,color:"rgb(67, 119, 190)",label:null},{min:0,max:5,point:null,color:"rgb(80, 177, 151)",label:null},{min:5,max:10,point:null,color:"rgb(94, 201, 78)",label:null},{min:10,max:15,point:null,color:"rgb(183, 217, 66)",label:null},{min:15,max:20,point:null,color:"rgb(225, 206, 60)",label:null},{min:20,max:25,point:null,color:"rgb(225, 160, 68)",label:null},{min:25,max:30,point:null,color:"rgb(218, 107, 83)",label:null},{min:30,max:40,point:null,color:"rgb(183, 53, 103)",label:null},{min:40,max:50,point:null,color:"rgb(107, 21, 39)",label:null},{min:50,max:null,point:null,color:"rgb(43, 1, 0)",label:null}]},{id:"6798eada-c2cd-4edc-8ed2-ad76041d6dd4",groupId:"67821566c7173439a2634e6f",name:"EC_t_multiple",unit:"℃",maxValue:50,minValue:-40,scale:1,gradient:null,remark:"气温",productType:"OTHER",items:[{min:-40,max:-30,point:null,color:"rgb(226, 226, 226)",label:null},{min:-30,max:-20,point:null,color:"rgb(244, 166, 244)",label:null},{min:-20,max:-15,point:null,color:"rgb(144, 25, 144)",label:null},{min:-15,max:-10,point:null,color:"rgb(42, 30, 105)",label:null},{min:-10,max:-5,point:null,color:"rgb(87, 81, 173)",label:null},{min:-5,max:0,point:null,color:"rgb(67, 119, 190)",label:null},{min:0,max:5,point:null,color:"rgb(80, 177, 151)",label:null},{min:5,max:10,point:null,color:"rgb(94, 201, 78)",label:null},{min:10,max:15,point:null,color:"rgb(183, 217, 66)",label:null},{min:15,max:20,point:null,color:"rgb(225, 206, 60)",label:null},{min:20,max:25,point:null,color:"rgb(225, 160, 68)",label:null},{min:25,max:30,point:null,color:"rgb(218, 107, 83)",label:null},{min:30,max:40,point:null,color:"rgb(183, 53, 103)",label:null},{min:40,max:50,point:null,color:"rgb(107, 21, 39)",label:null},{min:50,max:null,point:null,color:"rgb(43, 1, 0)",label:null}]},{id:"2f07bb01-aa12-4dcc-a7b8-157a0cc1260b",groupId:"67821566c7173439a2634e6f",name:"EC_wind10_single",unit:"m/s",maxValue:42,minValue:0,scale:1,gradient:null,remark:"10米风",productType:"OTHER",items:[{min:0,max:2,point:null,color:"rgb(88, 82, 112)",label:null},{min:2,max:4,point:null,color:"rgb(84, 89, 171)",label:null},{min:4,max:6,point:null,color:"rgb(68, 133, 187)",label:null},{min:6,max:8,point:null,color:"rgb(79, 168, 143)",label:null},{min:8,max:10,point:null,color:"rgb(79, 191, 73)",label:null},{min:10,max:12,point:null,color:"rgb(141, 201, 77)",label:null},{min:12,max:14,point:null,color:"rgb(203, 215, 69)",label:null},{min:14,max:18,point:null,color:"rgb(215, 189, 65)",label:null},{min:18,max:22,point:null,color:"rgb(214, 155, 70)",label:null},{min:22,max:26,point:null,color:"rgb(212, 119, 76)",label:null},{min:26,max:30,point:null,color:"rgb(199, 70, 110)",label:null},{min:30,max:34,point:null,color:"rgb(165, 56, 92)",label:null},{min:34,max:38,point:null,color:"rgb(144, 30, 80)",label:null},{min:38,max:42,point:null,color:"rgb(99, 27, 28)",label:null},{min:42,max:null,point:null,color:"rgb(43, 1, 0)",label:null}]},{id:"7e1c42df-d806-48b0-8ac7-63e8bc7f952f",groupId:"67821566c7173439a2634e6f",name:"EC_wind_multiple",unit:"m/s",maxValue:42,minValue:0,scale:1,gradient:null,remark:"高层风",productType:"OTHER",items:[{min:0,max:2,point:null,color:"rgb(88, 82, 112)",label:null},{min:2,max:4,point:null,color:"rgb(84, 89, 171)",label:null},{min:4,max:6,point:null,color:"rgb(68, 133, 187)",label:null},{min:6,max:8,point:null,color:"rgb(79, 168, 143)",label:null},{min:8,max:10,point:null,color:"rgb(79, 191, 73)",label:null},{min:10,max:12,point:null,color:"rgb(141, 201, 77)",label:null},{min:12,max:14,point:null,color:"rgb(203, 215, 69)",label:null},{min:14,max:18,point:null,color:"rgb(215, 189, 65)",label:null},{min:18,max:22,point:null,color:"rgb(214, 155, 70)",label:null},{min:22,max:26,point:null,color:"rgb(212, 119, 76)",label:null},{min:26,max:30,point:null,color:"rgb(199, 70, 110)",label:null},{min:30,max:34,point:null,color:"rgb(165, 56, 92)",label:null},{min:34,max:38,point:null,color:"rgb(144, 30, 80)",label:null},{min:38,max:42,point:null,color:"rgb(99, 27, 28)",label:null},{min:42,max:null,point:null,color:"rgb(43, 1, 0)",label:null}]},{id:"b5821ff9-c8ab-499d-8b9c-109e6c8ef390",groupId:"67821566c7173439a2634e6f",name:"EC_q_multiple",unit:"g/kg",maxValue:18,minValue:2,scale:1,gradient:null,remark:"比湿",productType:"OTHER",items:[{min:2,max:4,point:null,color:"rgb(255, 255, 255)",label:null},{min:4,max:6,point:null,color:"rgb(214, 253, 255)",label:null},{min:6,max:8,point:null,color:"rgb(51, 255, 240)",label:null},{min:8,max:10,point:null,color:"rgb(51, 196, 255)",label:null},{min:10,max:12,point:null,color:"rgb(51, 125, 255)",label:null},{min:12,max:14,point:null,color:"rgb(150, 227, 68)",label:null},{min:14,max:16,point:null,color:"rgb(207, 253, 169)",label:null},{min:16,max:18,point:null,color:"rgb(248, 242, 61)",label:null},{min:18,max:null,point:null,color:"rgb(255, 156, 49)",label:null}]},{id:"5a86d025-9c56-4abc-8e06-48aa89c81e8e",groupId:"67821566c7173439a2634e6f",name:"EC_z_multiple",unit:"m",maxValue:35,minValue:-40,scale:1,gradient:null,remark:"位势",productType:"OTHER",items:[{min:-40,max:-35,point:null,color:"rgb(113, 62, 131)",label:null},{min:-35,max:-28,point:null,color:"rgb(139, 78, 158)",label:null},{min:-28,max:-26,point:null,color:"rgb(158, 82, 183)",label:null},{min:-26,max:-24,point:null,color:"rgb(192, 156, 204)",label:null},{min:-24,max:-22,point:null,color:"rgb(215, 189, 226)",label:null},{min:-22,max:-20,point:null,color:"rgb(234, 223, 237)",label:null},{min:-20,max:-18,point:null,color:"rgb(27, 76, 116)",label:null},{min:-18,max:-16,point:null,color:"rgb(30, 98, 137)",label:null},{min:-16,max:-14,point:null,color:"rgb(41, 115, 160)",label:null},{min:-14,max:-12,point:null,color:"rgb(47, 156, 210)",label:null},{min:-12,max:-10,point:null,color:"rgb(94, 172, 221)",label:null},{min:-10,max:-8,point:null,color:"rgb(135, 193, 231)",label:null},{min:-8,max:-6,point:null,color:"rgb(178, 212, 237)",label:null},{min:-6,max:-4,point:null,color:"rgb(211, 233, 248)",label:null},{min:-4,max:-2,point:null,color:"rgb(237, 244, 250)",label:null},{min:-2,max:0,point:null,color:"rgb(255, 255, 255)",label:null},{min:0,max:2,point:null,color:"rgb(254, 254, 0)",label:null},{min:2,max:4,point:null,color:"rgb(254, 225, 0)",label:null},{min:4,max:6,point:null,color:"rgb(254, 211, 0)",label:null},{min:6,max:8,point:null,color:"rgb(254, 200, 0)",label:null},{min:8,max:10,point:null,color:"rgb(246, 191, 67)",label:null},{min:10,max:12,point:null,color:"rgb(254, 175, 0)",label:null},{min:12,max:14,point:null,color:"rgb(254, 150, 0)",label:null},{min:14,max:16,point:null,color:"rgb(252, 190, 185)",label:null},{min:16,max:18,point:null,color:"rgb(255, 163, 146)",label:null},{min:18,max:20,point:null,color:"rgb(255, 132, 117)",label:null},{min:20,max:22,point:null,color:"rgb(238, 72, 64)",label:null},{min:22,max:24,point:null,color:"rgb(255, 193, 232)",label:null},{min:24,max:26,point:null,color:"rgb(249, 164, 255)",label:null},{min:26,max:28,point:null,color:"rgb(255, 109, 255)",label:null},{min:28,max:30,point:null,color:"rgb(255, 73, 255)",label:null},{min:30,max:35,point:null,color:"rgb(227, 0, 232)",label:null},{min:35,max:null,point:null,color:"rgb(207, 11, 199)",label:null}]},{id:"3bd89366-ac87-4638-a2a8-58cdf0a9ad78",groupId:"67821566c7173439a2634e6f",name:"EC_msl_single",unit:"hPa",maxValue:1054,minValue:940,scale:1,gradient:null,remark:"海平面气压",productType:"OTHER",items:[{min:940,max:948,point:null,color:"rgb(238, 238, 238)",label:null},{min:948,max:956,point:null,color:"rgb(255, 51, 255)",label:null},{min:956,max:964,point:null,color:"rgb(157, 29, 156)",label:null},{min:964,max:973,point:null,color:"rgb(38, 29, 101)",label:null},{min:973,max:981,point:null,color:"rgb(87, 80, 162)",label:null},{min:981,max:989,point:null,color:"rgb(67, 119, 183)",label:null},{min:989,max:997,point:null,color:"rgb(79, 171, 129)",label:null},{min:997,max:1005,point:null,color:"rgb(110, 193, 86)",label:null},{min:1005,max:1013,point:null,color:"rgb(194, 194, 68)",label:null},{min:1013,max:1021,point:null,color:"rgb(214, 183, 64)",label:null},{min:1021,max:1030,point:null,color:"rgb(213, 134, 74)",label:null},{min:1030,max:1038,point:null,color:"rgb(201, 74, 110)",label:null},{min:1038,max:1046,point:null,color:"rgb(156, 46, 90)",label:null},{min:1046,max:1054,point:null,color:"rgb(109, 26, 48)",label:null},{min:1054,max:null,point:null,color:"rgb(47, 6, 7)",label:null}]},{id:"c4085783-16aa-48fc-93c1-dfd445fd9bf9",groupId:"67821566c7173439a2634e6f",name:"EC_d_multiple",unit:"10^-5/s",maxValue:53.3,minValue:-36.1,scale:1,gradient:null,remark:"散度",productType:"OTHER",items:[{min:-36.1,max:-18.2,point:null,color:"rgb(10, 23, 219)",label:null},{min:-18.2,max:-.3,point:null,color:"rgb(93, 178, 255)",label:null},{min:-.3,max:17.5,point:null,color:"rgb(166, 243, 255)",label:null},{min:17.5,max:35.4,point:null,color:"rgb(255, 220, 5)",label:null},{min:35.4,max:53.3,point:null,color:"rgb(238, 72, 64)",label:null},{min:53.3,max:null,point:null,color:"rgb(128, 0, 0)",label:null}]},{id:"cdc5ce80-805b-452e-bb59-bc27ae166ede",groupId:"67821566c7173439a2634e6f",name:"EC_d2m_single",unit:"℃",maxValue:40,minValue:-20,scale:1,gradient:null,remark:"2米露点温度",productType:"OTHER",items:[{min:-40,max:-30,point:null,color:"rgb(144, 25, 144)",label:null},{min:-30,max:-20,point:null,color:"rgb(148, 136, 210)",label:null},{min:-20,max:-10,point:null,color:"rgb(159, 227, 221)",label:null},{min:-10,max:0,point:null,color:"rgb(115, 200, 192)",label:null},{min:0,max:10,point:null,color:"rgb(92, 139, 185)",label:null},{min:10,max:20,point:null,color:"rgb(94, 139, 50)",label:null},{min:20,max:30,point:null,color:"rgb(225, 160, 68)",label:null},{min:30,max:40,point:null,color:"rgb(218, 107, 83)",label:null},{min:40,max:null,point:null,color:"rgb(107, 21, 39)",label:null}]},{id:"47f5582b-2aaf-4d80-877f-1d8a20a20560",groupId:"67821566c7173439a2634e6f",name:"IC",unit:null,maxValue:3,minValue:1,scale:1,gradient:null,remark:"积冰指数",productType:"RADAR",items:[{min:1,max:2,point:null,color:"rgb(173, 216, 230)",label:"轻度"},{min:2,max:3,point:null,color:"rgb(255, 255, 0)",label:"中度"},{min:3,max:null,point:null,color:"rgb(255, 0, 0)",label:"严重"}]},{id:"3bb41af2-d24f-4526-af55-e8cb4f6417c7",groupId:"67821566c7173439a2634e6f",name:"EC_lcc_single",unit:"oktas",maxValue:8,minValue:0,scale:1,gradient:null,remark:"低云量",productType:"OTHER",items:[{min:0,max:1,point:null,color:"rgb(211, 211, 211)",label:null},{min:1,max:2,point:null,color:"rgb(185, 185, 186)",label:null},{min:2,max:3,point:null,color:"rgb(163, 172, 183)",label:null},{min:3,max:4,point:null,color:"rgb(136, 154, 175)",label:null},{min:4,max:5,point:null,color:"rgb(135, 149, 164)",label:null},{min:5,max:6,point:null,color:"rgb(133, 143, 153)",label:null},{min:6,max:7,point:null,color:"rgb(130, 135, 140)",label:null},{min:7,max:8,point:null,color:"rgb(129, 130, 128)",label:null},{min:8,max:null,point:null,color:"rgb(128, 124, 114)",label:null}]},{id:"a350c2f9-7c44-43ca-b41d-114b63effc9b",groupId:"67821566c7173439a2634e6f",name:"ZDR",unit:"dB",maxValue:5,minValue:-4,scale:null,gradient:null,remark:"差分反射率因子",productType:"RADAR",items:[{min:-4,max:-3,point:null,color:"rgb(72,72,72)",label:null},{min:-3,max:-2,point:null,color:"rgb(110,110,110)",label:null},{min:-2,max:-1,point:null,color:"rgb(149,149,149)",label:null},{min:-1,max:0,point:null,color:"rgb(199,199,199)",label:null},{min:0,max:.2,point:null,color:"rgb(219,239,220)",label:null},{min:.2,max:.5,point:null,color:"rgb(32,189,61)",label:null},{min:.5,max:.8,point:null,color:"rgb(39,230,59)",label:null},{min:.8,max:1,point:null,color:"rgb(57,253,72)",label:null},{min:1,max:1.5,point:null,color:"rgb(255,253,73)",label:null},{min:1.5,max:2,point:null,color:"rgb(255,227,60)",label:null},{min:2,max:2.5,point:null,color:"rgb(254,185,51)",label:null},{min:2.5,max:3,point:null,color:"rgb(254,149,44)",label:null},{min:3,max:3.5,point:null,color:"rgb(253,92,33)",label:null},{min:3.5,max:4,point:null,color:"rgb(240,15,25)",label:null},{min:4,max:5,point:null,color:"rgb(184,0,61)",label:null},{min:5,max:null,point:null,color:"rgb(253,40,250)",label:null}]},{id:"b4fa5f0b-601c-4533-a571-59bbc64b6190",groupId:"67821566c7173439a2634e6f",name:"VBLUR",unit:"m/s",maxValue:64,minValue:-64,scale:null,gradient:null,remark:"径向速度扩展",productType:"RADAR",items:[{min:-64,max:-62,point:null,color:"rgb(202,253,123)",label:null},{min:-62,max:-57,point:null,color:"rgb(162,202,100)",label:null},{min:-57,max:-52,point:null,color:"rgb(106,137,50)",label:null},{min:-52,max:-47,point:null,color:"rgb(79,96,49)",label:null},{min:-47,max:-42,point:null,color:"rgb(96,157,158)",label:null},{min:-42,max:-37,point:null,color:"rgb(175,195,220)",label:null},{min:-37,max:-32,point:null,color:"rgb(164,238,253)",label:null},{min:-32,max:-27,point:null,color:"rgb(47,224,251)",label:null},{min:-27,max:-20,point:null,color:"rgb(0,134,245)",label:null},{min:-20,max:-15,point:null,color:"rgb(54,38,140)",label:null},{min:-15,max:-10,point:null,color:"rgb(59,249,154)",label:null},{min:-10,max:-5,point:null,color:"rgb(44,183,145)",label:null},{min:-5,max:-1,point:null,color:"rgb(37,139,50)",label:null},{min:-1,max:0,point:null,color:"rgb(203,188,160)",label:null},{min:0,max:1,point:null,color:"rgb(255,255,255)",label:null},{min:1,max:5,point:null,color:"rgb(246,129,57)",label:null},{min:5,max:10,point:null,color:"rgb(255,201,76)",label:null},{min:10,max:15,point:null,color:"rgb(255,251,91)",label:null},{min:15,max:20,point:null,color:"rgb(168,0,28)",label:null},{min:20,max:27,point:null,color:"rgb(204,108,48)",label:null},{min:27,max:32,point:null,color:"rgb(251,0,39)",label:null},{min:32,max:37,point:null,color:"rgb(253,190,201)",label:null},{min:37,max:42,point:null,color:"rgb(253,105,108)",label:null},{min:42,max:47,point:null,color:"rgb(147,64,65)",label:null},{min:47,max:52,point:null,color:"rgb(215,114,210)",label:null},{min:52,max:57,point:null,color:"rgb(253,40,250)",label:null},{min:57,max:62,point:null,color:"rgb(182,71,241)",label:null},{min:62,max:64,point:null,color:"rgb(113,47,149)",label:null},{min:64,max:null,point:null,color:"rgb(137,22,135)",label:null}]},{id:"71bd683e-b279-4315-8258-7d00e47204da",groupId:"68541156820de978f2963673",name:"CFS",unit:"dBZ",maxValue:75,minValue:5,scale:null,gradient:null,remark:"组合反射率",productType:"RADAR",items:[{min:5,max:10,point:null,color:"rgb(35,236,235)",label:null},{min:10,max:15,point:null,color:"rgb(19,160,220)",label:null},{min:15,max:20,point:null,color:"rgb(0,41,240)",label:null},{min:20,max:25,point:null,color:"rgb(43,252,62)",label:null},{min:25,max:30,point:null,color:"rgb(34,197,49)",label:null},{min:30,max:35,point:null,color:"rgb(24,142,35)",label:null},{min:35,max:40,point:null,color:"rgb(255,252,66)",label:null},{min:40,max:45,point:null,color:"rgb(229,189,51)",label:null},{min:45,max:50,point:null,color:"rgb(253,141,42)",label:null},{min:50,max:55,point:null,color:"rgb(252,0,25)",label:null},{min:55,max:60,point:null,color:"rgb(163,0,17)",label:null},{min:60,max:65,point:null,color:"rgb(99,0,10)",label:null},{min:65,max:70,point:null,color:"rgb(252,40,249)",label:null},{min:70,max:75,point:null,color:"rgb(149,89,195)",label:null},{min:75,max:null,point:null,color:"rgb(255,255,255)",label:null}]},{id:"ff63f0ee-d094-478a-a75c-a4394fd48c86",groupId:"68541156820de978f2963673",name:"MEHS",unit:"mm",maxValue:75,minValue:1,scale:1,gradient:null,remark:null,productType:"RADAR",items:[{min:.1,max:1,point:null,color:"rgb(7, 47, 107)",label:""},{min:1,max:2,point:null,color:"rgb(8, 87, 156)",label:""},{min:2,max:6,point:null,color:"rgb(90, 160, 205)",label:""},{min:6,max:10,point:null,color:"rgb(219, 245, 255)",label:""},{min:10,max:15,point:null,color:"rgb(248, 223, 187)",label:""},{min:15,max:20,point:null,color:"rgb(249, 175, 113)",label:""},{min:20,max:30,point:null,color:"rgb(242, 118, 18)",label:""},{min:30,max:40,point:null,color:"rgb(181, 106, 46)",label:""},{min:40,max:50,point:null,color:"rgb(202, 21, 27)",label:""},{min:50,max:null,point:null,color:"rgb(95, 0, 0)",label:""}]},{id:"917c9011-ece1-4a01-aa57-2e5328a01106",groupId:"68541156820de978f2963673",name:"AP10M",unit:"mm",maxValue:10,minValue:1,scale:1,gradient:null,remark:"10分钟雨量",productType:"NWP",items:[{min:0,max:.02,point:null,color:"rgb(205, 244, 206)",label:""},{min:.02,max:.3,point:null,color:"rgb(170, 248, 164)",label:""},{min:.3,max:1.2,point:null,color:"rgb(69, 245, 69)",label:""},{min:1.2,max:2.5,point:null,color:"rgb(111, 181, 251)",label:""},{min:2.5,max:4.5,point:null,color:"rgb(71, 56, 250)",label:""},{min:4.5,max:7,point:null,color:"rgb(198, 61, 247)",label:""},{min:7,max:null,point:null,color:"rgb(167, 56, 133)",label:""}]},{id:"8bb1a6a4-2d0a-407e-8763-b68341179ae0",groupId:"68541156820de978f2963673",name:"LYOHP",unit:"mm",maxValue:400,minValue:0,scale:null,gradient:null,remark:null,productType:null,items:[{min:.1,max:10,point:null,color:"rgb(165, 241, 141)",label:null},{min:10,max:25,point:null,color:"rgb(0, 124, 0)",label:null},{min:25,max:50,point:null,color:"rgb(61, 187, 249)",label:null},{min:50,max:100,point:null,color:"rgb(0, 0, 249)",label:null},{min:100,max:250,point:null,color:"rgb(249, 61, 249)",label:null},{min:250,max:400,point:null,color:"rgb(124, 0, 0)",label:null},{min:400,max:null,point:null,color:"rgb(249, 0, 0)",label:null}]},{id:"1a5064b5-6d9b-462f-8239-d1fe9cd5d992",groupId:"68541156820de978f2963673",name:"LYDHP",unit:"mm",maxValue:400,minValue:0,scale:null,gradient:null,remark:null,productType:null,items:[{min:.1,max:10,point:null,color:"rgb(165, 241, 141)",label:null},{min:10,max:25,point:null,color:"rgb(0, 124, 0)",label:null},{min:25,max:50,point:null,color:"rgb(61, 187, 249)",label:null},{min:50,max:100,point:null,color:"rgb(0, 0, 249)",label:null},{min:100,max:250,point:null,color:"rgb(249, 61, 249)",label:null},{min:250,max:400,point:null,color:"rgb(124, 0, 0)",label:null},{min:400,max:null,point:null,color:"rgb(249, 0, 0)",label:null}]},{id:"cc63517e-e9ef-42fa-ade2-02f80c03387a",groupId:"68541156820de978f2963673",name:"LYTHP",unit:"mm",maxValue:400,minValue:0,scale:null,gradient:null,remark:null,productType:null,items:[{min:.1,max:10,point:null,color:"rgb(165, 241, 141)",label:null},{min:10,max:25,point:null,color:"rgb(0, 124, 0)",label:null},{min:25,max:50,point:null,color:"rgb(61, 187, 249)",label:null},{min:50,max:100,point:null,color:"rgb(0, 0, 249)",label:null},{min:100,max:250,point:null,color:"rgb(249, 61, 249)",label:null},{min:250,max:400,point:null,color:"rgb(124, 0, 0)",label:null},{min:400,max:null,point:null,color:"rgb(249, 0, 0)",label:null}]}]};let dn=null;function Ft(){return dn===null&&(dn=Lt),dn}async function Ln(e){const l=await Ft();if(!l)return null;const n=e.toUpperCase();return l.item.find(t=>t.name.toUpperCase()===n)??null}function _l(e){const l=e.match(/rgb\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/);return l?[parseInt(l[1],10),parseInt(l[2],10),parseInt(l[3],10)]:[128,128,128]}function kt(e){const l=e.items;return n=>{if(l.length===0)return[128,128,128,255];if(n<l[0].min){const[d,f,b]=_l(l[0].color);return[d,f,b,255]}let t=l.length-1;for(let d=0;d<l.length;d++){const f=l[d],b=f.max===null||n<f.max;if(n>=f.min&&b){t=d;break}}if(!e.gradient){const[d,f,b]=_l(l[t].color);return[d,f,b,255]}const o=Math.min(t+1,l.length-1);if(o===t){const[d,f,b]=_l(l[t].color);return[d,f,b,255]}const i=l[t].min,r=l[o].min,a=r===i?0:(n-i)/(r-i),[u,s,c]=_l(l[t].color),[m,g,p]=_l(l[o].color);return[Math.round(u+a*(m-u)),Math.round(s+a*(g-s)),Math.round(c+a*(p-c)),255]}}const jt=(e,l)=>{const n=I.reactive({colorbarCanvas:e.colorbarCanvas,dataStats:null,variableName:"",colormap:"",colorsJsonItem:null});return n.dataStats=e.dataStats||null,n.variableName=e.variableName||"",n.colormap=e.colormap||"",n.colorsJsonItem=e.ColorsJsonItem||null,Gt(n,l.colormapChange)},Gt=(e,l)=>{const n=I.computed(()=>!!e.colorsJsonItem),t="viridis",o=I.ref(e.colormap||t),i=e.colorbarCanvas,r=I.computed(()=>e.colorsJsonItem?e.colorsJsonItem.minValue.toFixed(2):e.dataStats&&e.dataStats.min!==null&&e.dataStats.min!==void 0?e.dataStats.min.toFixed(2):"N/A"),a=I.computed(()=>e.colorsJsonItem?e.colorsJsonItem.maxValue.toFixed(2):e.dataStats&&e.dataStats.max!==null&&e.dataStats.max!==void 0?e.dataStats.max.toFixed(2):"N/A"),u=I.computed(()=>e.colorsJsonItem?((e.colorsJsonItem.minValue+e.colorsJsonItem.maxValue)/2).toFixed(2):e.dataStats&&e.dataStats.min!==null&&e.dataStats.max!==null?((e.dataStats.min+e.dataStats.max)/2).toFixed(2):"N/A"),s=I.computed(()=>e.colorsJsonItem?(e.colorsJsonItem.maxValue-e.colorsJsonItem.minValue).toFixed(2):e.dataStats&&e.dataStats.min!==null&&e.dataStats.max!==null?(e.dataStats.max-e.dataStats.min).toFixed(2):"N/A"),c=I.computed(()=>{const g=Tn(o.value),p=[];for(let d=0;d<=10;d++){const f=d/10,[b,x,h]=g(f);p.push(`rgb(${b}, ${x}, ${h}) ${f*100}%`)}return{background:`linear-gradient(to right, ${p.join(", ")})`}});I.watch(o,g=>{l(g)},{immediate:!0}),I.watch(()=>e.colormap,g=>{o.value=g??t},{immediate:!0}),I.watch(()=>e.colorsJsonItem,()=>{m()},{immediate:!0});function m(){if(!i.value)return;const g=i.value.getContext("2d");if(n.value&&e.colorsJsonItem){const p=e.colorsJsonItem,d=i.value.width,f=i.value.height;g.clearRect(0,0,d,f);const b=p.minValue,x=p.maxValue,h=x-b||1;for(let R=0;R<p.items.length;R++){const y=p.items[R],_=p.items[R+1],v=Math.max(y.min,b),M=y.max!==null?Math.min(y.max,x):_?_.min:x,E=Math.round((v-b)/h*d),C=Math.max(1,Math.round((M-v)/h*d)),[w,T,S]=_l(y.color);g.fillStyle=`rgb(${w},${T},${S})`,g.fillRect(E,0,C,f)}}else{const p=Dt(200,20,Tn(o.value),!1);g.clearRect(0,0,i.value.width,i.value.height),g.drawImage(p,0,0)}}return{minValue:r,midValue:u,maxValue:a,valueRange:s,selectedColormap:o,variableName:I.computed(()=>e.variableName),dataStats:e.dataStats,isJsonColormap:n,gradientStyle:c,updateColorbar:m}},Q={NETCDF_LOAD:"netcdf_load",NETCDF_PARSE:"netcdf_parse",MAP_INIT:"map_init",DATA_RENDER:"data_render",FILE_READ:"file_read",VALIDATION:"validation",PERFORMANCE:"performance",NETWORK:"network"},Z={CRITICAL:"critical",ERROR:"error",WARNING:"warning",INFO:"info"};class il extends Error{constructor(n,t,o=Z.ERROR,i=null){super(t);L(this,"name","AppError");L(this,"type");L(this,"severity");L(this,"originalError");L(this,"timestamp");L(this,"context");this.type=n,this.severity=o,this.originalError=i,this.timestamp=new Date().toISOString();const r=Error.captureStackTrace;r&&r(this,il)}toJSON(){return{name:this.name,type:this.type,severity:this.severity,message:this.message,timestamp:this.timestamp,stack:this.stack,originalError:this.originalError?this.originalError.toString():null}}toString(){return`[${this.severity.toUpperCase()}] ${this.type}: ${this.message}`}}class Wt{constructor(l={}){L(this,"options");L(this,"errors",[]);L(this,"listeners",new Set);this.options={logToConsole:!0,showUserNotifications:!0,maxErrors:100,...l}}handle(l,n={}){let t;return l instanceof il?t=l:l instanceof Error?t=new il(Q.VALIDATION,l.message,Z.ERROR,l):t=new il(Q.VALIDATION,String(l),Z.ERROR),t.context=n,this.options.logToConsole&&this.logToConsole(t),this.errors.push(t),this.errors.length>this.options.maxErrors&&this.errors.shift(),this.notifyListeners(t),this.options.showUserNotifications&&t.severity!==Z.INFO&&this.showUserNotification(t),t}logToConsole(l){const n=l.toString(),t=l.toJSON();switch(l.severity){case Z.CRITICAL:console.error("🔴 CRITICAL:",n,t);break;case Z.ERROR:console.error("❌ ERROR:",n,t);break;case Z.WARNING:console.warn("⚠️ WARNING:",n,t);break;case Z.INFO:console.info("ℹ️ INFO:",n,t);break;default:console.log("📝 LOG:",n,t)}}showUserNotification(l){const n={id:Date.now(),type:l.severity,title:this.getNotificationTitle(l),message:l.message,duration:this.getNotificationDuration(l)};console.log("User notification:",n),typeof window<"u"&&window.dispatchEvent(new CustomEvent("app-error",{detail:n}))}getNotificationTitle(l){switch(l.type){case Q.NETCDF_LOAD:return"文件加载错误";case Q.NETCDF_PARSE:return"数据解析错误";case Q.MAP_INIT:return"地图错误";case Q.DATA_RENDER:return"显示错误";case Q.FILE_READ:return"文件错误";default:return"应用错误"}}getNotificationDuration(l){switch(l.severity){case Z.CRITICAL:return 1e4;case Z.ERROR:return 5e3;case Z.WARNING:return 3e3;default:return 2e3}}addListener(l){this.listeners.add(l)}removeListener(l){this.listeners.delete(l)}notifyListeners(l){for(const n of this.listeners)try{n(l)}catch(t){console.error("错误监听器中出错:",t)}}getRecentErrors(l=10){return this.errors.slice(-l)}clearErrors(){this.errors=[]}getStats(){const l={total:this.errors.length,byType:{},bySeverity:{},lastError:this.errors.length>0?this.errors[this.errors.length-1]:null};for(const n of this.errors)l.byType[n.type]=(l.byType[n.type]??0)+1,l.bySeverity[n.severity]=(l.bySeverity[n.severity]??0)+1;return l}}class te{static validateNetCDFFile(l){const n=[];if(!l)return n.push("No file provided"),n;const t=[".nc",".nc4",".netcdf","application/x-netcdf"],o=l.name.toLowerCase().slice(l.name.lastIndexOf(".")),i=l.type.toLowerCase();t.some(a=>o.includes(a)||i.includes(a))||n.push(`Invalid file type: ${l.name}. Expected netCDF file (.nc, .nc4)`);const r=100*1024*1024;return l.size>r&&n.push(`File too large: ${(l.size/(1024*1024)).toFixed(2)}MB. Maximum size is 100MB`),l.size===0&&n.push("File is empty"),n}static validateNetCDFMetadata(l){var t;const n=[];if(!l)return n.push("No metadata available"),n;for(const o of["lon","lat"])(t=l.dimensions)!=null&&t[o]||n.push(`Missing required dimension: ${o}`);if(l.variables){const o=new Set(["lon","lat","longitude","latitude","x","y"]);Object.entries(l.variables).some(([r,a])=>(a.dimensions??[]).length===2&&!o.has(r.toLowerCase()))||n.push("No 2D displayable variable found in file")}if(l.dimensions)for(const[o,i]of Object.entries(l.dimensions))i.size<=0&&n.push(`Invalid dimension size for ${o}: ${i.size}`);return n}static validateDataArray(l,n){const t=[];if(!l)return t.push("No data provided"),t;if(!Array.isArray(l)&&!ArrayBuffer.isView(l))return t.push("Data must be an array or typed array"),t;n!==void 0&&l.length!==n&&t.push(`Data size mismatch: expected ${n}, got ${l.length}`);let o=0,i=0;const r=Math.min(1e3,l.length);for(let a=0;a<r;a++){const u=l[a];typeof u=="number"&&(isNaN(u)&&o++,isFinite(u)||i++)}return o>0&&t.push(`Found ${o} NaN values in sample`),i>0&&t.push(`Found ${i} infinite values in sample`),t}static validateCoordinates(l,n){const t=[];return typeof l!="number"||typeof n!="number"?(t.push("Coordinates must be numbers"),t):((l<-90||l>90)&&t.push(`Latitude out of range: ${l}. Must be between -90 and 90`),(n<-180||n>180)&&t.push(`Longitude out of range: ${n}. Must be between -180 and 180`),t)}}async function zt(e,l=3,n=1e3){let t;for(let o=0;o<=l;o++)try{return await e()}catch(i){if(t=i,o===l)break;const r=n*Math.pow(2,o)+Math.random()*1e3;console.log(`Retry attempt ${o+1}/${l} after ${r.toFixed(0)}ms`),await new Promise(a=>setTimeout(a,r))}throw t}let pn=null;function je(){return pn||(pn=new Wt({logToConsole:!0,showUserNotifications:!0,maxErrors:100})),pn}function Ul(e){if(e==null)return null;if(typeof e=="number")return e;if(Array.isArray(e)&&e.length>0)return e[0];if(typeof e=="object"){const l=Object.values(e);if(l.length>0&&typeof l[0]=="number")return l[0]}return null}function Xt(e,l){const n=Ul(l.scale_factor),t=Ul(l.add_offset),o=Ul(l._FillValue)??Ul(l.missing_value),i=l._Unsigned,r=typeof i=="string"&&i==="true"||Array.isArray(i)&&i[0]==="true",a=n!==null||t!==null,u=n??1,s=t??0,c=new Float32Array(e.length);for(let m=0;m<e.length;m++){let g=e[m];if(r&&g<0&&(g+=256),o!==null&&g===o){c[m]=NaN;continue}c[m]=a?u*g+s:g}return c}function Zt(e,l=null,n=null){if(!e||e.length===0)return new Float32Array(0);let t=l,o=n;if(t===null||o===null){let a=1/0,u=-1/0;for(let s=0;s<e.length;s++){const c=e[s];c!=null&&!isNaN(c)&&(a=Math.min(a,c),u=Math.max(u,c))}t=a===1/0?0:a,o=u===-1/0?1:u}if(t===o){const a=new Float32Array(e.length);for(let u=0;u<e.length;u++)a[u]=isNaN(e[u])?NaN:.5;return a}const i=new Float32Array(e.length),r=o-t;for(let a=0;a<e.length;a++){const u=e[a];u==null||isNaN(u)?i[a]=NaN:i[a]=(u-t)/r}return i}function Ht(e,l){const n=new Uint8ClampedArray(e.length*4);for(let t=0;t<e.length;t++){const o=e[t],i=t*4;if(isNaN(o))n[i]=0,n[i+1]=0,n[i+2]=0,n[i+3]=0;else{const[r,a,u,s=255]=l(o);n[i]=r,n[i+1]=a,n[i+2]=u,n[i+3]=s}}return n}function Ut(e,l){const n=new Uint8ClampedArray(e.length*4);for(let t=0;t<e.length;t++){const o=e[t],i=t*4;if(isNaN(o))n[i]=0,n[i+1]=0,n[i+2]=0,n[i+3]=0;else{const[r,a,u,s=255]=l(o);n[i]=r,n[i+1]=a,n[i+2]=u,n[i+3]=s}}return n}function Bt(e,l,n){const[t,o]=l,[i,r]=n;if(e.length!==t*o)throw new Error(`Data length (${e.length}) doesn't match original shape ${t}x${o}`);const a=new Float32Array(i*r),u=o/r,s=t/i;for(let c=0;c<i;c++)for(let m=0;m<r;m++){const g=Math.floor(m*u),p=Math.floor(c*s);a[c*r+m]=e[p*o+g]}return a}const{NetCDF4:$t}=Mt,Ge=new Set(["lon","lat","longitude","latitude","x","y"]);function Yt(e,l){return Ge.has(e.toLowerCase())?!0:(l.units??[]).some(t=>t==="degrees_east"||t==="degrees_north")}function oe(e,l){let n=0,t=Math.abs(e[0]-l);for(let o=1;o<e.length;o++){const i=Math.abs(e[o]-l);i<t&&(t=i,n=o)}return n}function Fn(e){return Object.entries(e).filter(([l,n])=>(n.dimensions??[]).length===2&&!Ge.has(l.toLowerCase())).map(([l])=>l)}function Kt(){const e=je(),l=I.ref(!1),n=I.ref(null),t=I.ref(null),o=I.reactive({dimensions:{},variables:{},attributes:{},fileInfo:null}),i=I.reactive({}),r=I.reactive({});async function a(b){l.value=!0,n.value=null;try{console.log("Loading netCDF file:",b.name,b.size),t.value=await zt(()=>$t.fromBlobLazy(b,{locateFile:v=>v.endsWith(".wasm")?new URL("/wasm/netcdf4-wasm.wasm",typeof document>"u"?require("url").pathToFileURL(__filename).href:gn&&gn.tagName.toUpperCase()==="SCRIPT"&&gn.src||new URL("xm-netcdf-loader.cjs.js",document.baseURI).href).href:v}),2,1e3),console.log("Dataset loaded:",t.value);const x=await t.value.getCompleteHierarchy();console.log("Dataset hierarchy:",x),await t.value.load();const h=t.value.dimensions,R={};for(const[v,M]of Object.entries(h))R[v]={name:v,size:M.size};o.dimensions=R;const y=t.value.variables,_={};for(const[v,M]of Object.entries(y)){const E=M.dimensions??[],C=E.map(w=>{var T;return((T=R[w])==null?void 0:T.size)??0});_[v]={name:v,dimensions:E,shape:C,dtype:M.datatype,type:M.datatype}}return o.variables=_,o.attributes=x.attributes??{},o.fileInfo={filename:b.name,size:b.size,format:t.value.file_format,dimensionsCount:Object.keys(o.dimensions).length,variablesCount:Object.keys(o.variables).length},o.dimensions.lon&&console.log("Lon dimension:",o.dimensions.lon),o.dimensions.lat&&console.log("Lat dimension:",o.dimensions.lat),await u(),s(),await c(x),{dataset:t.value,metadata:o,variableData:i,dataStats:r,success:!0}}catch(x){const h=x instanceof Error?x.message:String(x);return console.error("Error loading netCDF file:",x),n.value=h,e.handle(new il(Q.NETCDF_LOAD,h,Z.ERROR,x instanceof Error?x:null),{fileName:b==null?void 0:b.name,fileSize:b==null?void 0:b.size}),{success:!1,error:n.value}}finally{l.value=!1}}async function u(){var b;if(t.value)try{for(const x of Object.keys(i))delete i[x];for(const[x,h]of Object.entries(o.variables))try{const R=await t.value.getVariableArray(x),y=((b=t.value.variables[x])==null?void 0:b._attributes)??{},_=Xt(R,y);i[x]={data:_,shape:h.shape,dimensions:h.dimensions,type:h.type??h.dtype??"unknown"},console.log(`Extracted ${x}:`,{length:_.length,shape:h.shape,sample:Array.from(_.slice(0,5))})}catch(R){const y=R instanceof Error?R.message:String(R);console.warn(`Could not extract data for variable ${x}:`,R),i[x]={error:y,shape:h.shape,dimensions:h.dimensions}}}catch(x){console.error("Error extracting variable data:",x)}}function s(){for(const b of Object.keys(i)){const x=i[b];if(x.error||!x.data){r[b]={error:x.error??"No data available",min:null,max:null,mean:null,count:0,validCount:0,missingCount:0};continue}const h=x.data;let R=1/0,y=-1/0,_=0,v=0;for(let E=0;E<h.length;E++){const C=h[E];C!=null&&!isNaN(C)&&(R=Math.min(R,C),y=Math.max(y,C),_+=C,v++)}const M=v>0?_/v:null;r[b]={min:isFinite(R)?R:null,max:isFinite(y)?y:null,mean:M,std:null,count:h.length,validCount:v,missingCount:h.length-v},console.log(`Stats for ${b}:`,r[b])}}async function c(b){var h,R,y;if(!t.value)return;const x=b.dimensions??{};for(const[_,v]of Object.entries(x))if(Yt(_,v)&&!((h=i[_])!=null&&h.data))try{const M=await t.value.getVariableArray(_),E=M.length;i[_]={data:M,shape:[E],dimensions:[_],type:"f4"},console.log(`Loaded coordinate array '${_}': n=${E}, first=${(R=M[0])==null?void 0:R.toFixed(4)}, last=${(y=M[E-1])==null?void 0:y.toFixed(4)}`)}catch(M){console.warn(`Could not load coordinate array for dimension '${_}':`,String(M))}}async function m(b,x="/"){if(!t.value)throw new Error("No dataset loaded");try{return await t.value.getVariableArray(b,x)}catch(h){throw console.error(`Error getting variable ${b}:`,h),h}}async function g(b,x,h,R="/"){if(!t.value)throw new Error("No dataset loaded");try{return await t.value.getSlicedVariableArray(b,x,h,R)}catch(y){throw console.error(`Error getting sliced variable ${b}:`,y),y}}async function p(b,x,h){var k,D,G,X;if(!t.value)throw new Error("No dataset loaded");const R=o.variables[b];if(!R)throw new Error(`Variable ${b} not found`);const y=R.dimensions,_=y.indexOf("lon"),v=y.indexOf("lat");if(_===-1||v===-1)throw new Error(`Variable ${b} does not have lon/lat dimensions`);let M,E;const C=(k=i.lon)==null?void 0:k.data,w=(D=i.lat)==null?void 0:D.data;if(C&&w)M=oe(C,x),E=oe(w,h);else{const P=((G=o.dimensions.lon)==null?void 0:G.size)??R.shape[_]??1,q=((X=o.dimensions.lat)==null?void 0:X.size)??R.shape[v]??1;M=Math.max(0,Math.min(P-1,Math.round((x+180)/360*(P-1)))),E=Math.max(0,Math.min(q-1,Math.round((90-h)/180*(q-1))))}const T=[],S=[];for(let P=0;P<y.length;P++)P===_?(T.push(M),S.push(1)):P===v?(T.push(E),S.push(1)):(T.push(0),S.push(1));try{const P=await g(b,T,S);return P.length>0?P[0]:null}catch(P){throw console.error(`Error getting data at coordinate (lon=${x}, lat=${h}):`,P),P}}async function d(){if(t.value)try{await t.value.close(),t.value=null;for(const b of Object.keys(o))b!=="fileInfo"&&(o[b]={});o.fileInfo=null;for(const b of Object.keys(i))delete i[b];for(const b of Object.keys(r))delete r[b]}catch(b){console.error("Error closing dataset:",b)}}function f(){d(),l.value=!1,n.value=null}return{isLoading:l,error:n,dataset:t,metadata:o,variableData:i,dataStats:r,loadNetCdfFile:a,getVariableData:m,getSlicedVariableData:g,getDataAtCoordinate:p,closeDataset:d,reset:f,detect2dVariables:()=>Fn(o.variables)}}const qt=e=>{const l=I.ref(null),n=je(),t=I.ref([]),o=I.ref(!1),i=I.ref(null),{isLoading:r,error:a,metadata:u,variableData:s,dataStats:c,loadNetCdfFile:m}=Kt(),g=a,p=I.computed(()=>Fn(u.variables||{}));async function d(b){if(console.log(b,"handleFileSelect进入了"),!b)return;t.value=[],i.value=null;const x=te.validateNetCDFFile(b);if(console.log(x,"fileErrors"),x.length>0){t.value=x,x.forEach(h=>{n.handle(new il(Q.FILE_READ,h,Z.ERROR),{fileName:b.name})});return}l.value=b,o.value=!0;try{const h=await m(b);if(h.success){console.log("File loaded successfully:",b.name),console.log("Metadata:",u);const R=te.validateNetCDFMetadata(u);return R.length>0&&(t.value=R,R.forEach(y=>{n.handle(new il(Q.NETCDF_PARSE,y,Z.WARNING),{fileName:b.name})})),console.log(e,"回调函数"),e&&e.dataLoaded&&e.dataLoaded({variableData:s,metadata:u,dataStats:c}),{success:!0,variableData:s,metadata:u,dataStats:c}}else throw new Error(h.error||"Failed to load netCDF file")}catch(h){const R=h instanceof Error?h.message:String(h);i.value=R,n.handle(new il(Q.NETCDF_LOAD,R,Z.ERROR,h instanceof Error?h:null),{fileName:b.name})}finally{o.value=!1}}function f(b){var _;if(b===0)return"0 Bytes";const x=b??((_=l.value)==null?void 0:_.size)??0,h=1024,R=["Bytes","KB","MB","GB"],y=Math.floor(Math.log(b)/Math.log(h));return parseFloat((x/Math.pow(h,y)).toFixed(2))+" "+R[y]}return{isLoading:o,netcdfLoading:r,displayableVariables:p,handleFileSelect:d,formatFileSize:f,currentFile:l,error:g,loadError:i,validationErrors:t}};function Jt(...e){console.warn(...e)}const j={UNKNOWN:0,INTERSECTING:1,ABOVE:2,RIGHT:4,BELOW:8,LEFT:16};function ie(e){const l=Nl();for(let n=0,t=e.length;n<t;++n)Jl(l,e[n]);return l}function We(e,l,n){let t,o;return l<e[0]?t=e[0]-l:e[2]<l?t=l-e[2]:t=0,n<e[1]?o=e[1]-n:e[3]<n?o=n-e[3]:o=0,t*t+o*o}function ze(e,l){return Xe(e,l[0],l[1])}function wn(e,l){return e[0]<=l[0]&&l[2]<=e[2]&&e[1]<=l[1]&&l[3]<=e[3]}function Xe(e,l,n){return e[0]<=l&&l<=e[2]&&e[1]<=n&&n<=e[3]}function re(e,l){const n=e[0],t=e[1],o=e[2],i=e[3],r=l[0],a=l[1];let u=j.UNKNOWN;return r<n?u=u|j.LEFT:r>o&&(u=u|j.RIGHT),a<t?u=u|j.BELOW:a>i&&(u=u|j.ABOVE),u===j.UNKNOWN&&(u=j.INTERSECTING),u}function Nl(){return[1/0,1/0,-1/0,-1/0]}function kn(e,l,n,t,o){return o?(o[0]=e,o[1]=l,o[2]=n,o[3]=t,o):[e,l,n,t]}function jn(e){return kn(1/0,1/0,-1/0,-1/0,e)}function Qt(e,l){const n=e[0],t=e[1];return kn(n,t,n,t,l)}function lo(e,l,n,t,o){const i=jn(o);return Ze(i,e,l,n,t)}function no(e,l){return e[0]==l[0]&&e[2]==l[2]&&e[1]==l[1]&&e[3]==l[3]}function eo(e,l){return l[0]<e[0]&&(e[0]=l[0]),l[2]>e[2]&&(e[2]=l[2]),l[1]<e[1]&&(e[1]=l[1]),l[3]>e[3]&&(e[3]=l[3]),e}function Jl(e,l){l[0]<e[0]&&(e[0]=l[0]),l[0]>e[2]&&(e[2]=l[0]),l[1]<e[1]&&(e[1]=l[1]),l[1]>e[3]&&(e[3]=l[1])}function Ze(e,l,n,t,o){for(;n<t;n+=o)to(e,l[n],l[n+1]);return e}function to(e,l,n){e[0]=Math.min(e[0],l),e[1]=Math.min(e[1],n),e[2]=Math.max(e[2],l),e[3]=Math.max(e[3],n)}function oo(e,l){let n;return n=l(Gn(e)),n||(n=l(Wn(e)),n)||(n=l(zn(e)),n)||(n=l(an(e)),n)?n:!1}function io(e){let l=0;return zl(e)||(l=O(e)*H(e)),l}function Gn(e){return[e[0],e[1]]}function Wn(e){return[e[2],e[1]]}function wl(e){return[(e[0]+e[2])/2,(e[1]+e[3])/2]}function He(e,l,n,t,o){const[i,r,a,u,s,c,m,g]=ro(e,l,n,t);return kn(Math.min(i,a,s,m),Math.min(r,u,c,g),Math.max(i,a,s,m),Math.max(r,u,c,g),o)}function ro(e,l,n,t){const o=l*t[0]/2,i=l*t[1]/2,r=Math.cos(n),a=Math.sin(n),u=o*r,s=o*a,c=i*r,m=i*a,g=e[0],p=e[1];return[g-u+m,p-s-c,g-u-m,p-s+c,g+u-m,p+s+c,g+u+m,p+s-c,g-u+m,p-s-c]}function H(e){return e[3]-e[1]}function Ue(e,l,n){const t=n||Nl();return Vl(e,l)?(e[0]>l[0]?t[0]=e[0]:t[0]=l[0],e[1]>l[1]?t[1]=e[1]:t[1]=l[1],e[2]<l[2]?t[2]=e[2]:t[2]=l[2],e[3]<l[3]?t[3]=e[3]:t[3]=l[3]):jn(t),t}function an(e){return[e[0],e[3]]}function zn(e){return[e[2],e[3]]}function O(e){return e[2]-e[0]}function Vl(e,l){return e[0]<=l[2]&&e[2]>=l[0]&&e[1]<=l[3]&&e[3]>=l[1]}function zl(e){return e[2]<e[0]||e[3]<e[1]}function ao(e,l){return l?(l[0]=e[0],l[1]=e[1],l[2]=e[2],l[3]=e[3],l):e}function uo(e,l,n){let t=!1;const o=re(e,l),i=re(e,n);if(o===j.INTERSECTING||i===j.INTERSECTING)t=!0;else{const r=e[0],a=e[1],u=e[2],s=e[3],c=l[0],m=l[1],g=n[0],p=n[1],d=(p-m)/(g-c);let f,b;i&j.ABOVE&&!(o&j.ABOVE)&&(f=g-(p-s)/d,t=f>=r&&f<=u),!t&&i&j.RIGHT&&!(o&j.RIGHT)&&(b=p-(g-u)*d,t=b>=a&&b<=s),!t&&i&j.BELOW&&!(o&j.BELOW)&&(f=g-(p-a)/d,t=f>=r&&f<=u),!t&&i&j.LEFT&&!(o&j.LEFT)&&(b=p-(g-r)*d,t=b>=a&&b<=s)}return t}function B(e,l,n){return Math.min(Math.max(e,l),n)}function so(e,l,n,t,o,i){const r=o-n,a=i-t;if(r!==0||a!==0){const u=((e-n)*r+(l-t)*a)/(r*r+a*a);u>1?(n=o,t=i):u>0&&(n+=r*u,t+=a*u)}return Cl(e,l,n,t)}function Cl(e,l,n,t){const o=n-e,i=t-l;return o*o+i*i}function co(e){const l=e.length;for(let t=0;t<l;t++){let o=t,i=Math.abs(e[t][t]);for(let a=t+1;a<l;a++){const u=Math.abs(e[a][t]);u>i&&(i=u,o=a)}if(i===0)return null;const r=e[o];e[o]=e[t],e[t]=r;for(let a=t+1;a<l;a++){const u=-e[a][t]/e[t][t];for(let s=t;s<l+1;s++)t==s?e[a][s]=0:e[a][s]+=u*e[t][s]}}const n=new Array(l);for(let t=l-1;t>=0;t--){n[t]=e[t][l]/e[t][t];for(let o=t-1;o>=0;o--)e[o][l]-=e[o][t]*n[t]}return n}function ae(e){return e*180/Math.PI}function cl(e){return e*Math.PI/180}function Ml(e,l){const n=e%l;return n*l<0?n+l:n}function mo(e,l,n){return e+n*(l-e)}function Be(e,l){const n=Math.pow(10,l);return Math.round(e*n)/n}function Bl(e,l){return Math.ceil(Be(e,l))}function Sn(e,l,n){if(e>=l&&e<n)return e;const t=n-l;return((e-l)%t+t)%t+l}function bo(e,l){return e[0]+=+l[0],e[1]+=+l[1],e}function ln(e,l){let n=!0;for(let t=e.length-1;t>=0;--t)if(e[t]!=l[t]){n=!1;break}return n}function go(e,l){const n=Math.cos(l),t=Math.sin(l),o=e[0]*n-e[1]*t,i=e[1]*n+e[0]*t;return e[0]=o,e[1]=i,e}const $e={radians:6370997/(2*Math.PI),degrees:2*Math.PI*6370997/360,ft:.3048,m:1,"us-ft":1200/3937};class Xn{constructor(l){this.code_=l.code,this.units_=l.units,this.extent_=l.extent!==void 0?l.extent:null,this.worldExtent_=l.worldExtent!==void 0?l.worldExtent:null,this.axisOrientation_=l.axisOrientation!==void 0?l.axisOrientation:"enu",this.global_=l.global!==void 0?l.global:!1,this.canWrapX_=!!(this.global_&&this.extent_),this.getPointResolutionFunc_=l.getPointResolution,this.defaultTileGrid_=null,this.metersPerUnit_=l.metersPerUnit}canWrapX(){return this.canWrapX_}getCode(){return this.code_}getExtent(){return this.extent_}getUnits(){return this.units_}getMetersPerUnit(){return this.metersPerUnit_||$e[this.units_]}getWorldExtent(){return this.worldExtent_}getAxisOrientation(){return this.axisOrientation_}isGlobal(){return this.global_}setGlobal(l){this.global_=l,this.canWrapX_=!!(l&&this.extent_)}getDefaultTileGrid(){return this.defaultTileGrid_}setDefaultTileGrid(l){this.defaultTileGrid_=l}setExtent(l){this.extent_=l,this.canWrapX_=!!(this.global_&&l)}setWorldExtent(l){this.worldExtent_=l}setGetPointResolution(l){this.getPointResolutionFunc_=l}getPointResolutionFunc(){return this.getPointResolutionFunc_}}const Xl=6378137,vl=Math.PI*Xl,po=[-vl,-vl,vl,vl],ho=[-180,-85,180,85],$l=Xl*Math.log(Math.tan(Math.PI/2));class Rl extends Xn{constructor(l){super({code:l,units:"m",extent:po,global:!0,worldExtent:ho,getPointResolution:function(n,t){return n/Math.cosh(t[1]/Xl)}})}}const ue=[new Rl("EPSG:3857"),new Rl("EPSG:102100"),new Rl("EPSG:102113"),new Rl("EPSG:900913"),new Rl("http://www.opengis.net/def/crs/EPSG/0/3857"),new Rl("http://www.opengis.net/gml/srs/epsg.xml#3857")];function xo(e,l,n,t){const o=e.length;n=n>1?n:2,t=t??n,l===void 0&&(n>2?l=e.slice():l=new Array(o));for(let i=0;i<o;i+=t){l[i]=vl*e[i]/180;let r=Xl*Math.log(Math.tan(Math.PI*(+e[i+1]+90)/360));r>$l?r=$l:r<-$l&&(r=-$l),l[i+1]=r}return l}function fo(e,l,n,t){const o=e.length;n=n>1?n:2,t=t??n,l===void 0&&(n>2?l=e.slice():l=new Array(o));for(let i=0;i<o;i+=t)l[i]=180*e[i]/vl,l[i+1]=360*Math.atan(Math.exp(e[i+1]/Xl))/Math.PI-90;return l}const Ro=6378137,se=[-180,-90,180,90],yo=Math.PI*Ro/180;class bl extends Xn{constructor(l,n){super({code:l,units:"degrees",extent:se,axisOrientation:n,global:!0,metersPerUnit:yo,worldExtent:se})}}const ce=[new bl("CRS:84"),new bl("EPSG:4326","neu"),new bl("urn:ogc:def:crs:OGC:1.3:CRS84"),new bl("urn:ogc:def:crs:OGC:2:84"),new bl("http://www.opengis.net/def/crs/OGC/1.3/CRS84"),new bl("http://www.opengis.net/gml/srs/epsg.xml#4326","neu"),new bl("http://www.opengis.net/def/crs/EPSG/0/4326","neu")];let Nn={};function _o(e){return Nn[e]||Nn[e.replace(/urn:(x-)?ogc:def:crs:EPSG:(.*:)?(\w+)$/,"EPSG:$3")]||null}function Io(e,l){Nn[e]=l}function Ye(e){for(const l in e)delete e[l]}function vo(e){let l;for(l in e)return!1;return!l}let Tl={};function Gl(e,l,n){const t=e.getCode(),o=l.getCode();t in Tl||(Tl[t]={}),Tl[t][o]=n}function hn(e,l){return e in Tl&&l in Tl[e]?Tl[e][l]:null}const nn=.9996,K=.00669438,un=K*K,sn=un*K,gl=K/(1-K),me=Math.sqrt(1-K),Sl=(1-me)/(1+me),Ke=Sl*Sl,Zn=Ke*Sl,Hn=Zn*Sl,qe=Hn*Sl,Je=1-K/4-3*un/64-5*sn/256,Eo=3*K/8+3*un/32+45*sn/1024,Co=15*un/256+45*sn/1024,Mo=35*sn/3072,To=3/2*Sl-27/32*Zn+269/512*qe,Ao=21/16*Ke-55/32*Hn,wo=151/96*Zn-417/128*qe,So=1097/512*Hn,en=6378137;function No(e,l,n){const t=e-5e5,r=(n.north?l:l-1e7)/nn/(en*Je),a=r+To*Math.sin(2*r)+Ao*Math.sin(4*r)+wo*Math.sin(6*r)+So*Math.sin(8*r),u=Math.sin(a),s=u*u,c=Math.cos(a),m=u/c,g=m*m,p=g*g,d=1-K*s,f=Math.sqrt(1-K*s),b=en/f,x=(1-K)/d,h=gl*c**2,R=h*h,y=t/(b*nn),_=y*y,v=_*y,M=v*y,E=M*y,C=E*y,w=a-m/x*(_/2-M/24*(5+3*g+10*h-4*R-9*gl))+C/720*(61+90*g+298*h+45*p-252*gl-3*R);let T=(y-v/6*(1+2*g+h)+E/120*(5-2*h+28*g-3*R+8*gl+24*p))/c;return T=Sn(T+cl(Qe(n.number)),-Math.PI,Math.PI),[ae(T),ae(w)]}const be=-80,ge=84,Vo=-180,Po=180;function Oo(e,l,n){e=Sn(e,Vo,Po),l<be?l=be:l>ge&&(l=ge);const t=cl(l),o=Math.sin(t),i=Math.cos(t),r=o/i,a=r*r,u=a*a,s=cl(e),c=Qe(n.number),m=cl(c),g=en/Math.sqrt(1-K*o**2),p=gl*i**2,d=i*Sn(s-m,-Math.PI,Math.PI),f=d*d,b=f*d,x=b*d,h=x*d,R=h*d,y=en*(Je*t-Eo*Math.sin(2*t)+Co*Math.sin(4*t)-Mo*Math.sin(6*t)),_=nn*g*(d+b/6*(1-a+p)+h/120*(5-18*a+u+72*p-58*gl))+5e5;let v=nn*(y+g*r*(f/2+x/24*(5-a+9*p+4*p**2)+R/720*(61-58*a+u+600*p-330*gl)));return n.north||(v+=1e7),[_,v]}function Qe(e){return(e-1)*6-180+3}const Do=[/^EPSG:(\d+)$/,/^urn:ogc:def:crs:EPSG::(\d+)$/,/^http:\/\/www\.opengis\.net\/def\/crs\/EPSG\/0\/(\d+)$/];function lt(e){let l=0;for(const o of Do){const i=e.match(o);if(i){l=parseInt(i[1]);break}}if(!l)return null;let n=0,t=!1;return l>32700&&l<32761?n=l-32700:l>32600&&l<32661&&(t=!0,n=l-32600),n?{number:n,north:t}:null}function de(e,l){return function(n,t,o,i){const r=n.length;o=o>1?o:2,i=i??o,t||(o>2?t=n.slice():t=new Array(r));for(let a=0;a<r;a+=i){const u=n[a],s=n[a+1],c=e(u,s,l);t[a]=c[0],t[a+1]=c[1]}return t}}function Lo(e){return lt(e)?new Xn({code:e,units:"m"}):null}function Fo(e){const l=lt(e.getCode());return l?{forward:de(Oo,l),inverse:de(No,l)}:null}const ko=63710088e-1;function pe(e,l,n){n=n||ko;const t=cl(e[1]),o=cl(l[1]),i=(o-t)/2,r=cl(l[0]-e[0])/2,a=Math.sin(i)*Math.sin(i)+Math.sin(r)*Math.sin(r)*Math.cos(t)*Math.cos(o);return 2*n*Math.atan2(Math.sqrt(a),Math.sqrt(1-a))}const jo=[Fo],Go=[Lo];let Vn=!0;function nt(e){Vn=!1}function Un(e,l){if(l!==void 0){for(let n=0,t=e.length;n<t;++n)l[n]=e[n];l=l}else l=e.slice();return l}function Pn(e){Io(e.getCode(),e),Gl(e,e,Un)}function Wo(e){e.forEach(Pn)}function ll(e){if(typeof e!="string")return e;const l=_o(e);if(l)return l;for(const n of Go){const t=n(e);if(t)return t}return null}function he(e,l,n,t){e=ll(e);let o;const i=e.getPointResolutionFunc();if(i)o=i(l,n);else{const r=e.getUnits();if(r=="degrees"&&!t||t=="degrees")o=l;else{const a=$n(e,ll("EPSG:4326"));if(!a&&r!=="degrees")o=l*e.getMetersPerUnit();else{let s=[n[0]-l/2,n[1],n[0]+l/2,n[1],n[0],n[1]-l/2,n[0],n[1]+l/2];s=a(s,s,2);const c=pe(s.slice(0,2),s.slice(2,4)),m=pe(s.slice(4,6),s.slice(6,8));o=(c+m)/2}const u=e.getMetersPerUnit();u!==void 0&&(o/=u)}}return o}function xe(e){Wo(e),e.forEach(function(l){e.forEach(function(n){l!==n&&Gl(l,n,Un)})})}function zo(e,l,n,t){e.forEach(function(o){l.forEach(function(i){Gl(o,i,n),Gl(i,o,t)})})}function Bn(e,l){return e?typeof e=="string"?ll(e):e:ll(l)}function Xo(e){return function(l,n,t,o){const i=l.length;t=t!==void 0?t:2,o=o??t,n=n!==void 0?n:new Array(i);for(let r=0;r<i;r+=o){const a=e(l.slice(r,r+t)),u=a.length;for(let s=0,c=o;s<c;++s)n[r+s]=s>=u?l[r+s]:a[s]}return n}}function xn(e,l){return nt(),cn(e,"EPSG:4326","EPSG:3857")}function Zo(e,l){const n=cn(e,"EPSG:3857","EPSG:4326"),t=n[0];return(t<-180||t>180)&&(n[0]=Ml(t+180,360)-180),n}function fe(e,l){if(e===l)return!0;const n=e.getUnits()===l.getUnits();return(e.getCode()===l.getCode()||$n(e,l)===Un)&&n}function $n(e,l){const n=e.getCode(),t=l.getCode();let o=hn(n,t);if(o)return o;let i=null,r=null;for(const u of jo)i||(i=u(e)),r||(r=u(l));if(!i&&!r)return null;const a="EPSG:4326";if(r)if(i)o=fn(i.inverse,r.forward);else{const u=hn(n,a);u&&(o=fn(u,r.forward))}else{const u=hn(a,t);u&&(o=fn(i.inverse,u))}return o&&(Pn(e),Pn(l),Gl(e,l,o)),o}function fn(e,l){return function(n,t,o,i){return t=e(n,t,o,i),l(t,t,o,i)}}function tn(e,l){const n=ll(e),t=ll(l);return $n(n,t)}function cn(e,l,n){const t=tn(l,n);if(!t){const o=ll(l).getCode(),i=ll(n).getCode();throw new Error(`No transform available between ${o} and ${i}`)}return t(e,void 0,e.length)}function Re(e,l){return e}function al(e,l){return Vn&&!ln(e,[0,0])&&e[0]>=-180&&e[0]<=180&&e[1]>=-90&&e[1]<=90&&(Vn=!1,Jt("Call useGeographic() from ol/proj once to work with [longitude, latitude] coordinates.")),e}function Ho(e,l){return e}function El(e,l){return e}function Uo(){xe(ue),xe(ce),zo(ce,ue,xo,fo)}Uo();const Ll=I.ref(!1),ye=I.ref(null);I.ref(!1);I.ref(null);I.ref(!1);const sl=I.reactive({lat:112.750412,lng:33.741496}),ul=I.reactive({isMoving:!1,lastMoveTime:0,moveTimeout:null});function et(){ye.value&&ye.value.on("pointermove",e=>{console.log(e,"pointermove");const l=e.coordinate;console.log("地图坐标更新:",l),sl.lng=l[0],sl.lat=l[1],ul.isMoving=!0,ul.lastMoveTime=Date.now(),ul.moveTimeout&&clearTimeout(ul.moveTimeout),ul.moveTimeout=setTimeout(()=>{ul.isMoving=!1},100)})}const Bo=({map:e,mapInitialized:l,mapError:n,isLoading:t,currentCoords:o})=>(e.value=e.value,l.value=l.value,n.value=n.value,t.value=t.value,sl.lat=o.lat,sl.lng=o.lng,Ll.value=!0,console.log(e,"地图状态已更新"),{setupEventHandlers:et});function $o({map:e,mapInitialized:l,mapError:n,isLoading:t,currentCoords:o}){console.log(e,"useOpenLayersMap"),Ll.value=!0,et(),sl.lat=o.lat,sl.lng=o.lng;function i(){e.value&&(e.value.setTarget(void 0),e.value=null,l.value=!1,console.log("地图已销毁"))}function r(m,g,p){if(!e.value)return;const d=e.value.getView();d.animate({center:xn([g,m]),zoom:p??d.getZoom(),duration:500})}function a(){if(!e.value)return null;const m=Zo(e.value.getView().getCenter());return{lat:m[1],lng:m[0]}}function u(){return e.value?e.value.getView().getZoom():null}function s(m){if(!e.value)return;const g=e.value.getView(),p=[...xn([m.southWest.lng,m.southWest.lat]),...xn([m.northEast.lng,m.northEast.lat])];g.fit(p,{padding:[50,50,50,50],duration:1e3,maxZoom:15})}function c(m,g=6){return{lat:m.lat.toFixed(g),lng:m.lng.toFixed(g)}}return Ll.value?{mapState:Ll.value,map:e,mapInitialized:l,mapError:n,isLoading:t,currentCoords:sl,mouseEvents:ul,destroyMap:i,setView:r,getCenter:a,getZoom:u,fitBounds:s,formatCoords:c}:{mapState:Ll.value,map:e,mapInitialized:l,mapError:n,isLoading:t,currentCoords:sl,mouseEvents:ul,destroyMap:i,setView:r,getCenter:a,getZoom:u,fitBounds:s,formatCoords:c}}const V={IDLE:0,LOADING:1,LOADED:2,ERROR:3,EMPTY:4},el={ANIMATING:0,INTERACTING:1};function ol(e,l){if(!e)throw new Error(l)}new Array(6);function Ql(){return[1,0,0,1,0,0]}function tl(e,l){const n=l[0],t=l[1];return l[0]=e[0]*n+e[2]*t+e[4],l[1]=e[1]*n+e[3]*t+e[5],l}function on(e,l,n,t,o,i,r,a){const u=Math.sin(i),s=Math.cos(i);return e[0]=t*s,e[1]=o*u,e[2]=-t*u,e[3]=o*s,e[4]=r*t*s-a*t*u+l,e[5]=r*o*u+a*o*s+n,e}function Yo(e,l){const n=Ko(l);ol(n!==0,"Transformation matrix cannot be inverted");const t=l[0],o=l[1],i=l[2],r=l[3],a=l[4],u=l[5];return e[0]=r/n,e[1]=-o/n,e[2]=-i/n,e[3]=t/n,e[4]=(i*u-r*a)/n,e[5]=-(t*u-o*a)/n,e}function Ko(e){return e[0]*e[3]-e[1]*e[2]}const qo=[1e5,1e5,1e5,1e5,2,2];function Jo(e){return"matrix("+e.join(", ")+")"}function _e(e){return e.substring(7,e.length-1).split(",").map(parseFloat)}function Qo(e,l){const n=_e(e),t=_e(l);for(let o=0;o<6;++o)if(Math.round((n[o]-t[o])*qo[o])!==0)return!1;return!0}function li(e,l){return e>l?1:e<l?-1:0}function Yn(e,l,n){if(e[0]<=l)return 0;const t=e.length;if(l<=e[t-1])return t-1;if(typeof n=="function"){for(let o=1;o<t;++o){const i=e[o];if(i===l)return o;if(i<l)return n(l,e[o-1],i)>0?o-1:o}return t-1}if(n>0){for(let o=1;o<t;++o)if(e[o]<l)return o-1;return t-1}if(n<0){for(let o=1;o<t;++o)if(e[o]<=l)return o;return t-1}for(let o=1;o<t;++o){if(e[o]==l)return o;if(e[o]<l)return e[o-1]-l<l-e[o]?o-1:o}return t-1}function ni(e,l){const n=Array.isArray(l)?l:[l],t=n.length;for(let o=0;o<t;o++)e[e.length]=n[o]}function tt(e,l){const n=e.length;if(n!==l.length)return!1;for(let t=0;t<n;t++)if(e[t]!==l[t])return!1;return!0}const hl=typeof navigator<"u"&&typeof navigator.userAgent<"u"?navigator.userAgent.toLowerCase():"",ei=hl.includes("safari")&&!hl.includes("chrom");ei&&(hl.includes("version/15.4")||/cpu (os|iphone os) 15_4 like mac os x/.test(hl));hl.includes("webkit")&&hl.includes("edge");hl.includes("macintosh");const ot=typeof WorkerGlobalScope<"u"&&typeof OffscreenCanvas<"u"&&self instanceof WorkerGlobalScope,it=typeof Image<"u"&&Image.prototype.decode,rt=typeof createImageBitmap=="function";(function(){let e=!1;try{const l=Object.defineProperty({},"passive",{get:function(){e=!0}});window.addEventListener("_",null,l),window.removeEventListener("_",null,l)}catch{}return e})();function xl(e,l,n,t){let o;return n&&n.length?o=n.shift():ot?o=new class extends OffscreenCanvas{constructor(){super(...arguments);L(this,"style",{})}}(e??300,l??150):o=document.createElement("canvas"),e&&(o.width=e),l&&(o.height=l),o.getContext("2d",t)}let Rn;function Ie(){return Rn||(Rn=xl(1,1)),Rn}function at(e){const l=e.canvas;l.width=1,l.height=1,e.clearRect(0,0,1,1)}function ti(){return new Proxy({childNodes:[],appendChild:function(l){return this.childNodes.push(l),l},remove:function(){},removeChild:function(l){const n=this.childNodes.indexOf(l);if(n===-1)throw new Error("Node to remove was not found");return this.childNodes.splice(n,1),l},insertBefore:function(l,n){const t=this.childNodes.indexOf(n);if(t===-1)throw new Error("Reference node not found");return this.childNodes.splice(t,0,l),l},style:{}},{get(l,n,t){return n==="firstElementChild"?l.childNodes.length>0?l.childNodes[0]:null:Reflect.get(l,n,t)}})}function oi(e){return typeof HTMLCanvasElement<"u"&&e instanceof HTMLCanvasElement||typeof OffscreenCanvas<"u"&&e instanceof OffscreenCanvas}const ii=[NaN,NaN,NaN,0];let yn;function ri(){return yn||(yn=xl(1,1,void 0,{willReadFrequently:!0,desynchronized:!0})),yn}const ai=/^rgba?\(\s*(\d+%?)\s+(\d+%?)\s+(\d+%?)(?:\s*\/\s*(\d+%|\d*\.\d+|[01]))?\s*\)$/i,ui=/^rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)(?:\s*,\s*(\d+%|\d*\.\d+|[01]))?\s*\)$/i,si=/^rgba?\(\s*(\d+%)\s*,\s*(\d+%)\s*,\s*(\d+%)(?:\s*,\s*(\d+%|\d*\.\d+|[01]))?\s*\)$/i,ci=/^#([\da-f]{3,4}|[\da-f]{6}|[\da-f]{8})$/i;function Yl(e,l){return e.endsWith("%")?Number(e.substring(0,e.length-1))/l:Number(e)}function kl(e){throw new Error('failed to parse "'+e+'" as color')}function ut(e){if(e.toLowerCase().startsWith("rgb")){const i=e.match(ui)||e.match(ai)||e.match(si);if(i){const r=i[4],a=100/255;return[B(Yl(i[1],a)+.5|0,0,255),B(Yl(i[2],a)+.5|0,0,255),B(Yl(i[3],a)+.5|0,0,255),r!==void 0?B(Yl(r,100),0,1):1]}kl(e)}if(e.startsWith("#")){if(ci.test(e)){const i=e.substring(1),r=i.length<=4?1:2,a=[0,0,0,255];for(let u=0,s=i.length;u<s;u+=r){let c=parseInt(i.substring(u,u+r),16);r===1&&(c+=c<<4),a[u/r]=c}return a[3]=a[3]/255,a}kl(e)}const l=ri();l.fillStyle="#abcdef";let n=l.fillStyle;l.fillStyle=e,l.fillStyle===n&&(l.fillStyle="#fedcba",n=l.fillStyle,l.fillStyle=e,l.fillStyle===n&&kl(e));const t=l.fillStyle;if(t.startsWith("#")||t.startsWith("rgba"))return ut(t);l.clearRect(0,0,1,1),l.fillRect(0,0,1,1);const o=Array.from(l.getImageData(0,0,1,1).data);return o[3]=Be(o[3]/255,3),o}const mi=1024,Dl={};let _n=0;function bi(e){if(e==="none")return ii;if(Dl.hasOwnProperty(e))return Dl[e];if(_n>=mi){let n=0;for(const t in Dl)n++&3||(delete Dl[t],--_n)}const l=ut(e);l.length!==4&&kl(e);for(const n of l)isNaN(n)&&kl(e);return Dl[e]=l,++_n,l}function ve(e){return Array.isArray(e)?e:bi(e)}class mn{constructor(l){this.propagationStopped,this.defaultPrevented,this.type=l,this.target=null}preventDefault(){this.defaultPrevented=!0}stopPropagation(){this.propagationStopped=!0}}class gi extends mn{constructor(l,n,t,o){super(l),this.inversePixelTransform=n,this.frameState=t,this.context=o}}const Fl={PRERENDER:"prerender",POSTRENDER:"postrender",PRECOMPOSE:"precompose"};class di{constructor(){L(this,"pushMethodArgs_",(...l)=>(this.push_(l),this));this.instructions_=[],this.zIndex=0,this.offset_=0,this.context_=new Proxy(Ie(),{get:(l,n)=>{if(typeof Ie()[n]=="function")return this.push_(n),this.pushMethodArgs_},set:(l,n,t)=>(this.push_(n,t),!0)})}push_(...l){const n=this.instructions_,t=this.zIndex+this.offset_;n[t]||(n[t]=[]),n[t].push(...l)}pushFunction(l){this.push_(l)}getContext(){return this.context_}draw(l){this.instructions_.forEach(n=>{for(let t=0,o=n.length;t<o;++t){const i=n[t];if(typeof i=="function"){i(l);continue}const r=n[++t];if(typeof l[i]=="function")l[i](...r);else{if(typeof r=="function"){l[i]=r(l);continue}l[i]=r}}})}clear(){this.instructions_.length=0,this.zIndex=0,this.offset_=0}offset(){this.offset_=this.instructions_.length,this.zIndex=0}}const ml={CHANGE:"change"};class pi{constructor(){this.disposed=!1}dispose(){this.disposed||(this.disposed=!0,this.disposeInternal())}disposeInternal(){}}function On(){}function hi(e){let l,n,t;return function(){const o=Array.prototype.slice.call(arguments);return(!n||this!==t||!tt(o,n))&&(t=this,n=o,l=e.apply(this,arguments)),l}}function xi(e){function l(){let n;try{n=e()}catch(t){return Promise.reject(t)}return n instanceof Promise?n:Promise.resolve(n)}return l()}class st extends pi{constructor(l){super(),this.eventTarget_=l,this.pendingRemovals_=null,this.dispatching_=null,this.listeners_=null}addEventListener(l,n){if(!l||!n)return;const t=this.listeners_||(this.listeners_={}),o=t[l]||(t[l]=[]);o.includes(n)||o.push(n)}dispatchEvent(l){const n=typeof l=="string",t=n?l:l.type,o=this.listeners_&&this.listeners_[t];if(!o)return;const i=n?new mn(l):l;i.target||(i.target=this.eventTarget_||this);const r=this.dispatching_||(this.dispatching_={}),a=this.pendingRemovals_||(this.pendingRemovals_={});t in r||(r[t]=0,a[t]=0),++r[t];let u;for(let s=0,c=o.length;s<c;++s)if("handleEvent"in o[s]?u=o[s].handleEvent(i):u=o[s].call(this,i),u===!1||i.propagationStopped){u=!1;break}if(--r[t]===0){let s=a[t];for(delete a[t];s--;)this.removeEventListener(t,On);delete r[t]}return u}disposeInternal(){this.listeners_&&Ye(this.listeners_)}getListeners(l){return this.listeners_&&this.listeners_[l]||void 0}hasListener(l){return this.listeners_?l?l in this.listeners_:Object.keys(this.listeners_).length>0:!1}removeEventListener(l,n){if(!this.listeners_)return;const t=this.listeners_[l];if(!t)return;const o=t.indexOf(n);o!==-1&&(this.pendingRemovals_&&l in this.pendingRemovals_?(t[o]=On,++this.pendingRemovals_[l]):(t.splice(o,1),t.length===0&&delete this.listeners_[l]))}}function pl(e,l,n,t,o){if(o){const r=n;n=function(a){return e.removeEventListener(l,n),r.call(t??this,a)}}else t&&t!==e&&(n=n.bind(t));const i={target:e,type:l,listener:n};return e.addEventListener(l,n),i}function Ee(e,l,n,t){return pl(e,l,n,t,!0)}function Al(e){e&&e.target&&(e.target.removeEventListener(e.type,e.listener),Ye(e))}class ct extends st{constructor(){super(),this.on=this.onInternal,this.once=this.onceInternal,this.un=this.unInternal,this.revision_=0}changed(){++this.revision_,this.dispatchEvent(ml.CHANGE)}getRevision(){return this.revision_}onInternal(l,n){if(Array.isArray(l)){const t=l.length,o=new Array(t);for(let i=0;i<t;++i)o[i]=pl(this,l[i],n);return o}return pl(this,l,n)}onceInternal(l,n){let t;if(Array.isArray(l)){const o=l.length;t=new Array(o);for(let i=0;i<o;++i)t[i]=Ee(this,l[i],n)}else t=Ee(this,l,n);return n.ol_key=t,t}unInternal(l,n){const t=n.ol_key;if(t)fi(t);else if(Array.isArray(l))for(let o=0,i=l.length;o<i;++o)this.removeEventListener(l[o],n);else this.removeEventListener(l,n)}}function fi(e){if(Array.isArray(e))for(let l=0,n=e.length;l<n;++l)Al(e[l]);else Al(e)}function F(){throw new Error("Unimplemented abstract method.")}let Ri=0;function yi(e){return e.ol_uid||(e.ol_uid=String(++Ri))}const _i=5;class Ii extends ct{constructor(l){super(),this.ready=!0,this.boundHandleImageChange_=this.handleImageChange_.bind(this),this.layer_=l,this.staleKeys_=new Array,this.maxStaleKeys=_i}getStaleKeys(){return this.staleKeys_}prependStaleKey(l){this.staleKeys_.unshift(l),this.staleKeys_.length>this.maxStaleKeys&&(this.staleKeys_.length=this.maxStaleKeys)}getFeatures(l){return F()}getData(l){return null}prepareFrame(l){return F()}renderFrame(l,n){return F()}forEachFeatureAtCoordinate(l,n,t,o,i){}getLayer(){return this.layer_}handleFontsChanged(){}handleImageChange_(l){const n=l.target;(n.getState()===V.LOADED||n.getState()===V.ERROR)&&this.renderIfReadyAndVisible()}loadImage(l){let n=l.getState();return n!=V.LOADED&&n!=V.ERROR&&l.addEventListener(ml.CHANGE,this.boundHandleImageChange_),n==V.IDLE&&(l.load(),n=l.getState()),n==V.LOADED}renderIfReadyAndVisible(){const l=this.getLayer();l&&l.getVisible()&&l.getSourceState()==="ready"&&l.changed()}renderDeferred(l){}disposeInternal(){delete this.layer_,super.disposeInternal()}}let Il=null;function vi(){Il=xl(1,1,void 0,{willReadFrequently:!0})}class Ei extends Ii{constructor(l){super(l),this.container=null,this.renderedResolution,this.tempTransform=Ql(),this.pixelTransform=Ql(),this.inversePixelTransform=Ql(),this.context=null,this.deferredContext_=null,this.containerReused=!1,this.frameState=null}getImageData(l,n,t){Il||vi(),Il.clearRect(0,0,1,1);let o;try{Il.drawImage(l,n,t,1,1,0,0,1,1),o=Il.getImageData(0,0,1,1).data}catch{return Il=null,null}return o}getBackground(l){let t=this.getLayer().getBackground();return typeof t=="function"&&(t=t(l.viewState.resolution)),t||void 0}useContainer(l,n,t){const o=this.getLayer().getClassName();let i,r;if(l&&l.className===o&&(!t||l&&l.style.backgroundColor&&tt(ve(l.style.backgroundColor),ve(t)))){const a=l.firstElementChild;oi(a)&&(r=a.getContext("2d"))}if(r&&Qo(r.canvas.style.transform,n)?(this.container=l,this.context=r,this.containerReused=!0):this.containerReused?(this.container=null,this.context=null,this.containerReused=!1):this.container&&(this.container.style.backgroundColor=null),!this.container){i=ot?ti():document.createElement("div"),i.className=o;let a=i.style;a.position="absolute",a.width="100%",a.height="100%",r=xl();const u=r.canvas;i.appendChild(u),a=u.style,a.position="absolute",a.left="0",a.transformOrigin="top left",this.container=i,this.context=r}!this.containerReused&&t&&!this.container.style.backgroundColor&&(this.container.style.backgroundColor=t)}clipUnrotated(l,n,t){const o=an(t),i=zn(t),r=Wn(t),a=Gn(t);tl(n.coordinateToPixelTransform,o),tl(n.coordinateToPixelTransform,i),tl(n.coordinateToPixelTransform,r),tl(n.coordinateToPixelTransform,a);const u=this.inversePixelTransform;tl(u,o),tl(u,i),tl(u,r),tl(u,a),l.save(),l.beginPath(),l.moveTo(Math.round(o[0]),Math.round(o[1])),l.lineTo(Math.round(i[0]),Math.round(i[1])),l.lineTo(Math.round(r[0]),Math.round(r[1])),l.lineTo(Math.round(a[0]),Math.round(a[1])),l.clip()}prepareContainer(l,n){const t=l.extent,o=l.viewState.resolution,i=l.viewState.rotation,r=l.pixelRatio,a=Math.round(O(t)/o*r),u=Math.round(H(t)/o*r);on(this.pixelTransform,l.size[0]/2,l.size[1]/2,1/r,1/r,i,-a/2,-u/2),Yo(this.inversePixelTransform,this.pixelTransform);const s=Jo(this.pixelTransform);if(this.useContainer(n,s,this.getBackground(l)),!this.containerReused){const c=this.context.canvas;c.width!=a||c.height!=u?(c.width=a,c.height=u):this.context.clearRect(0,0,a,u),s!==c.style.transform&&(c.style.transform=s)}}dispatchRenderEvent_(l,n,t){const o=this.getLayer();if(o.hasListener(l)){const i=new gi(l,this.inversePixelTransform,t,n);o.dispatchEvent(i)}}preRender(l,n){this.frameState=n,!n.declutter&&this.dispatchRenderEvent_(Fl.PRERENDER,l,n)}postRender(l,n){n.declutter||this.dispatchRenderEvent_(Fl.POSTRENDER,l,n)}renderDeferredInternal(l){}getRenderContext(l){return l.declutter&&!this.deferredContext_&&(this.deferredContext_=new di),l.declutter?this.deferredContext_.getContext():this.context}renderDeferred(l){l.declutter&&(this.dispatchRenderEvent_(Fl.PRERENDER,this.context,l),l.declutter&&this.deferredContext_&&(this.deferredContext_.draw(this.context),this.deferredContext_.clear()),this.renderDeferredInternal(l),this.dispatchRenderEvent_(Fl.POSTRENDER,this.context,l))}getRenderTransform(l,n,t,o,i,r,a){const u=i/2,s=r/2,c=o/n,m=-c,g=-l[0]+a,p=-l[1];return on(this.tempTransform,u,s,c,m,-t,g,p)}disposeInternal(){delete this.frameState,super.disposeInternal()}}class Ci extends Ei{constructor(l){super(l),this.image=null,this.renderedSourceRevision_=0}getImage(){return this.image?this.image.getImage():null}prepareFrame(l){const n=l.layerStatesArray[l.layerIndex],t=l.pixelRatio,o=l.viewState,i=o.resolution,r=this.getLayer().getSource(),a=l.viewHints;let u=l.extent;if(n.extent!==void 0&&(u=Ue(u,El(n.extent,o.projection))),!a[el.ANIMATING]&&!a[el.INTERACTING]&&!zl(u))if(r){!this.getLayer().rendered&&this.renderedSourceRevision_!==r.getRevision()&&(this.image=null),this.renderedSourceRevision_=r.getRevision();const s=o.projection,c=r.getImage(u,i,t,s);c&&(this.loadImage(c)?this.image=c:c.getState()===V.EMPTY&&(this.image=null))}else this.image=null;return!!this.image}getData(l){const n=this.frameState;if(!n)return null;const t=this.getLayer(),o=tl(n.pixelToCoordinateTransform,l.slice()),i=t.getExtent();if(i&&!ze(i,o))return null;const r=this.image.getExtent(),a=this.image.getImage(),u=O(r),s=Math.floor(a.width*((o[0]-r[0])/u));if(s<0||s>=a.width)return null;const c=H(r),m=Math.floor(a.height*((r[3]-o[1])/c));return m<0||m>=a.height?null:this.getImageData(a,s,m)}renderFrame(l,n){const t=this.image,o=t.getExtent(),i=t.getResolution(),[r,a]=Array.isArray(i)?i:[i,i],u=t.getPixelRatio(),s=l.layerStatesArray[l.layerIndex],c=l.pixelRatio,m=l.viewState,g=m.center,p=m.resolution,d=c*r/(p*u),f=c*a/(p*u);this.prepareContainer(l,n);const b=this.context.canvas.width,x=this.context.canvas.height,h=this.getRenderContext(l);let R=!1,y=!0;if(s.extent){const C=El(s.extent,m.projection);y=Vl(C,l.extent),R=y&&!wn(C,l.extent),R&&this.clipUnrotated(h,l,C)}const _=t.getImage(),v=on(this.tempTransform,b/2,x/2,d,f,0,u*(o[0]-g[0])/r,u*(g[1]-o[3])/a);this.renderedResolution=a*c/u;const M=_.width*v[0],E=_.height*v[3];if(this.getLayer().getSource().getInterpolate()||(h.imageSmoothingEnabled=!1),this.preRender(h,l),y&&M>=.5&&E>=.5){const C=v[4],w=v[5],T=s.opacity;T!==1&&(h.save(),h.globalAlpha=T),h.drawImage(_,0,0,+_.width,+_.height,C,w,M,E),T!==1&&h.restore()}return this.postRender(this.context,l),R&&h.restore(),h.imageSmoothingEnabled=!0,this.container}}const Mi={PROPERTYCHANGE:"propertychange"};class Ce extends mn{constructor(l,n,t){super(l),this.key=n,this.oldValue=t}}class bn extends ct{constructor(l){super(),this.on,this.once,this.un,yi(this),this.values_=null,l!==void 0&&this.setProperties(l)}get(l){let n;return this.values_&&this.values_.hasOwnProperty(l)&&(n=this.values_[l]),n}getKeys(){return this.values_&&Object.keys(this.values_)||[]}getProperties(){return this.values_&&Object.assign({},this.values_)||{}}getPropertiesInternal(){return this.values_}hasProperties(){return!!this.values_}notify(l,n){let t;t=`change:${l}`,this.hasListener(t)&&this.dispatchEvent(new Ce(t,l,n)),t=Mi.PROPERTYCHANGE,this.hasListener(t)&&this.dispatchEvent(new Ce(t,l,n))}addChangeListener(l,n){this.addEventListener(`change:${l}`,n)}removeChangeListener(l,n){this.removeEventListener(`change:${l}`,n)}set(l,n,t){const o=this.values_||(this.values_={});if(t)o[l]=n;else{const i=o[l];o[l]=n,i!==n&&this.notify(l,i)}}setProperties(l,n){for(const t in l)this.set(t,l[t],n)}applyProperties(l){l.values_&&Object.assign(this.values_||(this.values_={}),l.values_)}unset(l,n){if(this.values_&&l in this.values_){const t=this.values_[l];delete this.values_[l],vo(this.values_)&&(this.values_=null),n||this.notify(l,t)}}}const J={CENTER:"center",RESOLUTION:"resolution",ROTATION:"rotation"};function Me(e,l,n){return function(t,o,i,r,a){if(!t)return;if(!o&&!l)return t;const u=l?0:i[0]*o,s=l?0:i[1]*o,c=a?a[0]:0,m=a?a[1]:0;let g=e[0]+u/2+c,p=e[2]-u/2+c,d=e[1]+s/2+m,f=e[3]-s/2+m;g>p&&(g=(p+g)/2,p=g),d>f&&(d=(f+d)/2,f=d);let b=B(t[0],g,p),x=B(t[1],d,f);if(r&&n&&o){const h=30*o;b+=-h*Math.log(1+Math.max(0,g-t[0])/h)+h*Math.log(1+Math.max(0,t[0]-p)/h),x+=-h*Math.log(1+Math.max(0,d-t[1])/h)+h*Math.log(1+Math.max(0,t[1]-f)/h)}return[b,x]}}function Ti(e){return e}function Ai(e){return Math.pow(e,3)}function wi(e){return 1-Ai(1-e)}function Si(e){return 3*e*e-2*e*e*e}function Ni(e,l,n,t,o,i,r){i=i||[],r=r||2;let a=0;for(let u=l;u<n;u+=t){const s=e[u],c=e[u+1];i[a++]=o[0]*s+o[2]*c+o[4],i[a++]=o[1]*s+o[3]*c+o[5];for(let m=2;m<r;m++)i[a++]=e[u+m]}return i&&i.length!=a&&(i.length=a),i}function Vi(e,l,n,t,o,i,r){r=r||[];const a=Math.cos(o),u=Math.sin(o),s=i[0],c=i[1];let m=0;for(let g=l;g<n;g+=t){const p=e[g]-s,d=e[g+1]-c;r[m++]=s+p*a-d*u,r[m++]=c+p*u+d*a;for(let f=g+2;f<g+t;++f)r[m++]=e[f]}return r&&r.length!=m&&(r.length=m),r}function Pi(e,l,n,t,o,i,r,a){a=a||[];const u=r[0],s=r[1];let c=0;for(let m=l;m<n;m+=t){const g=e[m]-u,p=e[m+1]-s;a[c++]=u+o*g,a[c++]=s+i*p;for(let d=m+2;d<m+t;++d)a[c++]=e[d]}return a&&a.length!=c&&(a.length=c),a}function Oi(e,l,n,t,o,i,r){r=r||[];let a=0;for(let u=l;u<n;u+=t){r[a++]=e[u]+o,r[a++]=e[u+1]+i;for(let s=u+2;s<u+t;++s)r[a++]=e[s]}return r&&r.length!=a&&(r.length=a),r}const Te=Ql(),Di=[NaN,NaN];class Li extends bn{constructor(){super(),this.extent_=Nl(),this.extentRevision_=-1,this.simplifiedGeometryMaxMinSquaredTolerance=0,this.simplifiedGeometryRevision=0,this.simplifyTransformedInternal=hi((l,n,t)=>{if(!t)return this.getSimplifiedGeometry(n);const o=this.clone();return o.applyTransform(t),o.getSimplifiedGeometry(n)})}simplifyTransformed(l,n){return this.simplifyTransformedInternal(this.getRevision(),l,n)}clone(){return F()}closestPointXY(l,n,t,o){return F()}containsXY(l,n){return this.closestPointXY(l,n,Di,Number.MIN_VALUE)===0}getClosestPoint(l,n){return n=n||[NaN,NaN],this.closestPointXY(l[0],l[1],n,1/0),n}intersectsCoordinate(l){return this.containsXY(l[0],l[1])}computeExtent(l){return F()}getExtent(l){if(this.extentRevision_!=this.getRevision()){const n=this.computeExtent(this.extent_);(isNaN(n[0])||isNaN(n[1]))&&jn(n),this.extentRevision_=this.getRevision()}return ao(this.extent_,l)}rotate(l,n){F()}scale(l,n,t){F()}simplify(l){return this.getSimplifiedGeometry(l*l)}getSimplifiedGeometry(l){return F()}getType(){return F()}applyTransform(l){F()}intersectsExtent(l){return F()}translate(l,n){F()}transform(l,n){const t=ll(l),o=t.getUnits()=="tile-pixels"?function(i,r,a){const u=t.getExtent(),s=t.getWorldExtent(),c=H(s)/H(u);on(Te,s[0],s[3],c,-c,0,0,0);const m=Ni(i,0,i.length,a,Te,r),g=tn(t,n);return g?g(m,m,a):m}:tn(t,n);return this.applyTransform(o),this}}class Kn extends Li{constructor(){super(),this.layout="XY",this.stride=2,this.flatCoordinates}computeExtent(l){return lo(this.flatCoordinates,0,this.flatCoordinates.length,this.stride,l)}getCoordinates(){return F()}getFirstCoordinate(){return this.flatCoordinates.slice(0,this.stride)}getFlatCoordinates(){return this.flatCoordinates}getLastCoordinate(){return this.flatCoordinates.slice(this.flatCoordinates.length-this.stride)}getLayout(){return this.layout}getSimplifiedGeometry(l){if(this.simplifiedGeometryRevision!==this.getRevision()&&(this.simplifiedGeometryMaxMinSquaredTolerance=0,this.simplifiedGeometryRevision=this.getRevision()),l<0||this.simplifiedGeometryMaxMinSquaredTolerance!==0&&l<=this.simplifiedGeometryMaxMinSquaredTolerance)return this;const n=this.getSimplifiedGeometryInternal(l);return n.getFlatCoordinates().length<this.flatCoordinates.length?n:(this.simplifiedGeometryMaxMinSquaredTolerance=l,this)}getSimplifiedGeometryInternal(l){return this}getStride(){return this.stride}setFlatCoordinates(l,n){this.stride=Ae(l),this.layout=l,this.flatCoordinates=n}setCoordinates(l,n){F()}setLayout(l,n,t){let o;if(l)o=Ae(l);else{for(let i=0;i<t;++i){if(n.length===0){this.layout="XY",this.stride=2;return}n=n[0]}o=n.length,l=Fi(o)}this.layout=l,this.stride=o}applyTransform(l){this.flatCoordinates&&(l(this.flatCoordinates,this.flatCoordinates,this.layout.startsWith("XYZ")?3:2,this.stride),this.changed())}rotate(l,n){const t=this.getFlatCoordinates();if(t){const o=this.getStride();Vi(t,0,t.length,o,l,n,t),this.changed()}}scale(l,n,t){n===void 0&&(n=l),t||(t=wl(this.getExtent()));const o=this.getFlatCoordinates();if(o){const i=this.getStride();Pi(o,0,o.length,i,l,n,t,o),this.changed()}}translate(l,n){const t=this.getFlatCoordinates();if(t){const o=this.getStride();Oi(t,0,t.length,o,l,n,t),this.changed()}}}function Fi(e){let l;return e==2?l="XY":e==3?l="XYZ":e==4&&(l="XYZM"),l}function Ae(e){let l;return e=="XY"?l=2:e=="XYZ"||e=="XYM"?l=3:e=="XYZM"&&(l=4),l}function mt(e,l,n,t){let o=0;const i=e[n-t],r=e[n-t+1];let a=0,u=0;for(;l<n;l+=t){const s=e[l]-i,c=e[l+1]-r;o+=u*s-a*c,a=s,u=c}return o/2}function ki(e,l,n,t){let o=0;for(let i=0,r=n.length;i<r;++i){const a=n[i];o+=mt(e,l,a,t),l=a}return o}function we(e,l,n,t,o,i,r){const a=e[l],u=e[l+1],s=e[n]-a,c=e[n+1]-u;let m;if(s===0&&c===0)m=l;else{const g=((o-a)*s+(i-u)*c)/(s*s+c*c);if(g>1)m=n;else if(g>0){for(let p=0;p<t;++p)r[p]=mo(e[l+p],e[n+p],g);r.length=t;return}else m=l}for(let g=0;g<t;++g)r[g]=e[m+g];r.length=t}function bt(e,l,n,t,o){let i=e[l],r=e[l+1];for(l+=t;l<n;l+=t){const a=e[l],u=e[l+1],s=Cl(i,r,a,u);s>o&&(o=s),i=a,r=u}return o}function ji(e,l,n,t,o){for(let i=0,r=n.length;i<r;++i){const a=n[i];o=bt(e,l,a,t,o),l=a}return o}function gt(e,l,n,t,o,i,r,a,u,s,c){if(l==n)return s;let m,g;if(o===0){if(g=Cl(r,a,e[l],e[l+1]),g<s){for(m=0;m<t;++m)u[m]=e[l+m];return u.length=t,g}return s}c=c||[NaN,NaN];let p=l+t;for(;p<n;)if(we(e,p-t,p,t,r,a,c),g=Cl(r,a,c[0],c[1]),g<s){for(s=g,m=0;m<t;++m)u[m]=c[m];u.length=t,p+=t}else p+=t*Math.max((Math.sqrt(g)-Math.sqrt(s))/o|0,1);if(we(e,n-t,l,t,r,a,c),g=Cl(r,a,c[0],c[1]),g<s){for(s=g,m=0;m<t;++m)u[m]=c[m];u.length=t}return s}function Gi(e,l,n,t,o,i,r,a,u,s,c){c=c||[NaN,NaN];for(let m=0,g=n.length;m<g;++m){const p=n[m];s=gt(e,l,p,t,o,i,r,a,u,s,c),l=p}return s}function Wi(e,l,n,t){for(let o=0,i=n.length;o<i;++o)e[l++]=n[o];return l}function dt(e,l,n,t){for(let o=0,i=n.length;o<i;++o){const r=n[o];for(let a=0;a<t;++a)e[l++]=r[a]}return l}function zi(e,l,n,t,o){o=o||[];let i=0;for(let r=0,a=n.length;r<a;++r){const u=dt(e,l,n[r],t);o[i++]=u,l=u}return o.length=i,o}function pt(e,l,n,t,o){o=o!==void 0?o:[];let i=0;for(let r=l;r<n;r+=t)o[i++]=e.slice(r,r+t);return o.length=i,o}function Xi(e,l,n,t,o){o=o!==void 0?o:[];let i=0;for(let r=0,a=n.length;r<a;++r){const u=n[r];o[i++]=pt(e,l,u,t,o[i]),l=u}return o.length=i,o}function Zi(e,l,n,t,o,i,r){const a=(n-l)/t;if(a<3){for(;l<n;l+=t)i[r++]=e[l],i[r++]=e[l+1];return r}const u=new Array(a);u[0]=1,u[a-1]=1;const s=[l,n-t];let c=0;for(;s.length>0;){const m=s.pop(),g=s.pop();let p=0;const d=e[g],f=e[g+1],b=e[m],x=e[m+1];for(let h=g+t;h<m;h+=t){const R=e[h],y=e[h+1],_=so(R,y,d,f,b,x);_>p&&(c=h,p=_)}p>o&&(u[(c-l)/t]=1,g+t<c&&s.push(g,c),c+t<m&&s.push(c,m))}for(let m=0;m<a;++m)u[m]&&(i[r++]=e[l+m*t],i[r++]=e[l+m*t+1]);return r}function yl(e,l){return l*Math.round(e/l)}function Hi(e,l,n,t,o,i,r){if(l==n)return r;let a=yl(e[l],o),u=yl(e[l+1],o);l+=t,i[r++]=a,i[r++]=u;let s,c;do if(s=yl(e[l],o),c=yl(e[l+1],o),l+=t,l==n)return i[r++]=s,i[r++]=c,r;while(s==a&&c==u);for(;l<n;){const m=yl(e[l],o),g=yl(e[l+1],o);if(l+=t,m==s&&g==c)continue;const p=s-a,d=c-u,f=m-a,b=g-u;if(p*b==d*f&&(p<0&&f<p||p==f||p>0&&f>p)&&(d<0&&b<d||d==b||d>0&&b>d)){s=m,c=g;continue}i[r++]=s,i[r++]=c,a=s,u=c,s=m,c=g}return i[r++]=s,i[r++]=c,r}function Ui(e,l,n,t,o,i,r,a){for(let u=0,s=n.length;u<s;++u){const c=n[u];r=Hi(e,l,c,t,o,i,r),a.push(r),l=c}return r}class Wl extends Kn{constructor(l,n){super(),this.maxDelta_=-1,this.maxDeltaRevision_=-1,n!==void 0&&!Array.isArray(l[0])?this.setFlatCoordinates(n,l):this.setCoordinates(l,n)}clone(){return new Wl(this.flatCoordinates.slice(),this.layout)}closestPointXY(l,n,t,o){return o<We(this.getExtent(),l,n)?o:(this.maxDeltaRevision_!=this.getRevision()&&(this.maxDelta_=Math.sqrt(bt(this.flatCoordinates,0,this.flatCoordinates.length,this.stride,0)),this.maxDeltaRevision_=this.getRevision()),gt(this.flatCoordinates,0,this.flatCoordinates.length,this.stride,this.maxDelta_,!0,l,n,t,o))}getArea(){return mt(this.flatCoordinates,0,this.flatCoordinates.length,this.stride)}getCoordinates(){return pt(this.flatCoordinates,0,this.flatCoordinates.length,this.stride)}getSimplifiedGeometryInternal(l){const n=[];return n.length=Zi(this.flatCoordinates,0,this.flatCoordinates.length,this.stride,l,n,0),new Wl(n,"XY")}getType(){return"LinearRing"}intersectsExtent(l){return!1}setCoordinates(l,n){this.setLayout(n,l,1),this.flatCoordinates||(this.flatCoordinates=[]),this.flatCoordinates.length=dt(this.flatCoordinates,0,l,this.stride),this.changed()}}class qn extends Kn{constructor(l,n){super(),this.setCoordinates(l,n)}clone(){const l=new qn(this.flatCoordinates.slice(),this.layout);return l.applyProperties(this),l}closestPointXY(l,n,t,o){const i=this.flatCoordinates,r=Cl(l,n,i[0],i[1]);if(r<o){const a=this.stride;for(let u=0;u<a;++u)t[u]=i[u];return t.length=a,r}return o}getCoordinates(){return this.flatCoordinates.slice()}computeExtent(l){return Qt(this.flatCoordinates,l)}getType(){return"Point"}intersectsExtent(l){return Xe(l,this.flatCoordinates[0],this.flatCoordinates[1])}setCoordinates(l,n){this.setLayout(n,l,0),this.flatCoordinates||(this.flatCoordinates=[]),this.flatCoordinates.length=Wi(this.flatCoordinates,0,l,this.stride),this.changed()}}function Bi(e,l,n,t,o){return!oo(o,function(r){return!dl(e,l,n,t,r[0],r[1])})}function dl(e,l,n,t,o,i){let r=0,a=e[n-t],u=e[n-t+1];for(;l<n;l+=t){const s=e[l],c=e[l+1];u<=i?c>i&&(s-a)*(i-u)-(o-a)*(c-u)>0&&r++:c<=i&&(s-a)*(i-u)-(o-a)*(c-u)<0&&r--,a=s,u=c}return r!==0}function ht(e,l,n,t,o,i){if(n.length===0||!dl(e,l,n[0],t,o,i))return!1;for(let r=1,a=n.length;r<a;++r)if(dl(e,n[r-1],n[r],t,o,i))return!1;return!0}function $i(e,l,n,t,o,i,r){let a,u,s,c,m,g,p;const d=o[i+1],f=[];for(let h=0,R=n.length;h<R;++h){const y=n[h];for(c=e[y-t],g=e[y-t+1],a=l;a<y;a+=t)m=e[a],p=e[a+1],(d<=g&&p<=d||g<=d&&d<=p)&&(s=(d-g)/(p-g)*(m-c)+c,f.push(s)),c=m,g=p}let b=NaN,x=-1/0;for(f.sort(li),c=f[0],a=1,u=f.length;a<u;++a){m=f[a];const h=Math.abs(m-c);h>x&&(s=(c+m)/2,ht(e,l,n,t,s,d)&&(b=s,x=h)),c=m}return isNaN(b)&&(b=o[i]),[b,d,x]}function Yi(e,l,n,t,o){let i;for(l+=t;l<n;l+=t)if(i=o(e.slice(l-t,l),e.slice(l,l+t)),i)return i;return!1}function xt(e,l,n,t,o,i){return i=i??Ze(Nl(),e,l,n,t),Vl(o,i)?i[0]>=o[0]&&i[2]<=o[2]||i[1]>=o[1]&&i[3]<=o[3]?!0:Yi(e,l,n,t,function(r,a){return uo(o,r,a)}):!1}function Ki(e,l,n,t,o){return!!(xt(e,l,n,t,o)||dl(e,l,n,t,o[0],o[1])||dl(e,l,n,t,o[0],o[3])||dl(e,l,n,t,o[2],o[1])||dl(e,l,n,t,o[2],o[3]))}function qi(e,l,n,t,o){if(!Ki(e,l,n[0],t,o))return!1;if(n.length===1)return!0;for(let i=1,r=n.length;i<r;++i)if(Bi(e,n[i-1],n[i],t,o)&&!xt(e,n[i-1],n[i],t,o))return!1;return!0}function Ji(e,l,n,t){for(;l<n-t;){for(let o=0;o<t;++o){const i=e[l+o];e[l+o]=e[n-t+o],e[n-t+o]=i}l+=t,n-=t}}function ft(e,l,n,t){let o=0,i=e[n-t],r=e[n-t+1];for(;l<n;l+=t){const a=e[l],u=e[l+1];o+=(a-i)*(u+r),i=a,r=u}return o===0?void 0:o>0}function Qi(e,l,n,t,o){o=o!==void 0?o:!1;for(let i=0,r=n.length;i<r;++i){const a=n[i],u=ft(e,l,a,t);if(i===0){if(o&&u||!o&&!u)return!1}else if(o&&!u||!o&&u)return!1;l=a}return!0}function Se(e,l,n,t,o){o=o!==void 0?o:!1;for(let i=0,r=n.length;i<r;++i){const a=n[i],u=ft(e,l,a,t);(i===0?o&&u||!o&&!u:o&&!u||!o&&u)&&Ji(e,l,a,t),l=a}return l}class rn extends Kn{constructor(l,n,t){super(),this.ends_=[],this.flatInteriorPointRevision_=-1,this.flatInteriorPoint_=null,this.maxDelta_=-1,this.maxDeltaRevision_=-1,this.orientedRevision_=-1,this.orientedFlatCoordinates_=null,n!==void 0&&t?(this.setFlatCoordinates(n,l),this.ends_=t):this.setCoordinates(l,n)}appendLinearRing(l){this.flatCoordinates?ni(this.flatCoordinates,l.getFlatCoordinates()):this.flatCoordinates=l.getFlatCoordinates().slice(),this.ends_.push(this.flatCoordinates.length),this.changed()}clone(){const l=new rn(this.flatCoordinates.slice(),this.layout,this.ends_.slice());return l.applyProperties(this),l}closestPointXY(l,n,t,o){return o<We(this.getExtent(),l,n)?o:(this.maxDeltaRevision_!=this.getRevision()&&(this.maxDelta_=Math.sqrt(ji(this.flatCoordinates,0,this.ends_,this.stride,0)),this.maxDeltaRevision_=this.getRevision()),Gi(this.flatCoordinates,0,this.ends_,this.stride,this.maxDelta_,!0,l,n,t,o))}containsXY(l,n){return ht(this.getOrientedFlatCoordinates(),0,this.ends_,this.stride,l,n)}getArea(){return ki(this.getOrientedFlatCoordinates(),0,this.ends_,this.stride)}getCoordinates(l){let n;return l!==void 0?(n=this.getOrientedFlatCoordinates().slice(),Se(n,0,this.ends_,this.stride,l)):n=this.flatCoordinates,Xi(n,0,this.ends_,this.stride)}getEnds(){return this.ends_}getFlatInteriorPoint(){if(this.flatInteriorPointRevision_!=this.getRevision()){const l=wl(this.getExtent());this.flatInteriorPoint_=$i(this.getOrientedFlatCoordinates(),0,this.ends_,this.stride,l,0),this.flatInteriorPointRevision_=this.getRevision()}return this.flatInteriorPoint_}getInteriorPoint(){return new qn(this.getFlatInteriorPoint(),"XYM")}getLinearRingCount(){return this.ends_.length}getLinearRing(l){return l<0||this.ends_.length<=l?null:new Wl(this.flatCoordinates.slice(l===0?0:this.ends_[l-1],this.ends_[l]),this.layout)}getLinearRings(){const l=this.layout,n=this.flatCoordinates,t=this.ends_,o=[];let i=0;for(let r=0,a=t.length;r<a;++r){const u=t[r],s=new Wl(n.slice(i,u),l);o.push(s),i=u}return o}getOrientedFlatCoordinates(){if(this.orientedRevision_!=this.getRevision()){const l=this.flatCoordinates;Qi(l,0,this.ends_,this.stride)?this.orientedFlatCoordinates_=l:(this.orientedFlatCoordinates_=l.slice(),this.orientedFlatCoordinates_.length=Se(this.orientedFlatCoordinates_,0,this.ends_,this.stride)),this.orientedRevision_=this.getRevision()}return this.orientedFlatCoordinates_}getSimplifiedGeometryInternal(l){const n=[],t=[];return n.length=Ui(this.flatCoordinates,0,this.ends_,this.stride,Math.sqrt(l),n,0,t),new rn(n,"XY",t)}getType(){return"Polygon"}intersectsExtent(l){return qi(this.getOrientedFlatCoordinates(),0,this.ends_,this.stride,l)}setCoordinates(l,n){this.setLayout(n,l,2),this.flatCoordinates||(this.flatCoordinates=[]);const t=zi(this.flatCoordinates,0,l,this.stride,this.ends_);this.flatCoordinates.length=t.length===0?0:t[t.length-1],this.changed()}}function Ne(e){if(zl(e))throw new Error("Cannot create polygon from empty extent");const l=e[0],n=e[1],t=e[2],o=e[3],i=[l,n,l,o,t,o,t,n,l,n];return new rn(i,"XY",[i.length])}function Jn(e,l,n,t){const o=O(l)/n[0],i=H(l)/n[1];return t?Math.min(e,Math.max(o,i)):Math.min(e,Math.min(o,i))}function Qn(e,l,n){let t=Math.min(e,l);const o=50;return t*=Math.log(1+o*Math.max(0,e/l-1))/o+1,n&&(t=Math.max(t,n),t/=Math.log(1+o*Math.max(0,n/e-1))/o+1),B(t,n/2,l*2)}function lr(e,l,n,t){return l=l!==void 0?l:!0,function(o,i,r,a){if(o!==void 0){const u=e[0],s=e[e.length-1],c=n?Jn(u,n,r,t):u;if(a)return l?Qn(o,c,s):B(o,s,c);const m=Math.min(c,o),g=Math.floor(Yn(e,m,i));return e[g]>c&&g<e.length-1?e[g+1]:e[g]}}}function nr(e,l,n,t,o,i){return t=t!==void 0?t:!0,n=n!==void 0?n:0,function(r,a,u,s){if(r!==void 0){const c=o?Jn(l,o,u,i):l;if(s)return t?Qn(r,c,n):B(r,n,c);const m=1e-9,g=Math.ceil(Math.log(l/c)/Math.log(e)-m),p=-a*(.5-m)+.5,d=Math.min(c,r),f=Math.floor(Math.log(l/d)/Math.log(e)+p),b=Math.max(g,f),x=l/Math.pow(e,b);return B(x,n,c)}}}function Ve(e,l,n,t,o){return n=n!==void 0?n:!0,function(i,r,a,u){if(i!==void 0){const s=t?Jn(e,t,a,o):e;return!n||!u?B(i,l,s):Qn(i,s,l)}}}function er(e){if(e!==void 0)return 0}function Pe(e){if(e!==void 0)return e}function tr(e){const l=2*Math.PI/e;return function(n,t){if(t)return n;if(n!==void 0)return n=Math.floor(n/l+.5)*l,n}}function or(e){const l=cl(5);return function(n,t){return t||n===void 0?n:Math.abs(n)<=l?0:n}}const ir=256,In=0;class Oe extends bn{constructor(l){super(),this.on,this.once,this.un,l=Object.assign({},l),this.hints_=[0,0],this.animations_=[],this.updateAnimationKey_,this.projection_=Bn(l.projection,"EPSG:3857"),this.viewportSize_=[100,100],this.targetCenter_=null,this.targetResolution_,this.targetRotation_,this.nextCenter_=null,this.nextResolution_,this.nextRotation_,this.cancelAnchor_=void 0,l.projection&&nt(),l.center&&(l.center=al(l.center,this.projection_)),l.extent&&(l.extent=El(l.extent,this.projection_)),this.applyOptions_(l)}applyOptions_(l){const n=Object.assign({},l);for(const a in J)delete n[a];this.setProperties(n,!0);const t=ar(l);this.maxResolution_=t.maxResolution,this.minResolution_=t.minResolution,this.zoomFactor_=t.zoomFactor,this.resolutions_=l.resolutions,this.padding_=l.padding,this.minZoom_=t.minZoom;const o=rr(l),i=t.constraint,r=ur(l);this.constraints_={center:o,resolution:i,rotation:r},this.setRotation(l.rotation!==void 0?l.rotation:0),this.setCenterInternal(l.center!==void 0?l.center:null),l.resolution!==void 0?this.setResolution(l.resolution):l.zoom!==void 0&&this.setZoom(l.zoom)}get padding(){return this.padding_}set padding(l){let n=this.padding_;this.padding_=l;const t=this.getCenterInternal();if(t){const o=l||[0,0,0,0];n=n||[0,0,0,0];const i=this.getResolution(),r=i/2*(o[3]-n[3]+n[1]-o[1]),a=i/2*(o[0]-n[0]+n[2]-o[2]);this.setCenterInternal([t[0]+r,t[1]-a])}}getUpdatedOptions_(l){const n=this.getProperties();return n.resolution!==void 0?n.resolution=this.getResolution():n.zoom=this.getZoom(),n.center=this.getCenterInternal(),n.rotation=this.getRotation(),Object.assign({},n,l)}animate(l){this.isDef()&&!this.getAnimating()&&this.resolveConstraints(0);const n=new Array(arguments.length);for(let t=0;t<n.length;++t){let o=arguments[t];o.center&&(o=Object.assign({},o),o.center=al(o.center,this.getProjection())),o.anchor&&(o=Object.assign({},o),o.anchor=al(o.anchor,this.getProjection())),n[t]=o}this.animateInternal.apply(this,n)}animateInternal(l){let n=arguments.length,t;n>1&&typeof arguments[n-1]=="function"&&(t=arguments[n-1],--n);let o=0;for(;o<n&&!this.isDef();++o){const c=arguments[o];c.center&&this.setCenterInternal(c.center),c.zoom!==void 0?this.setZoom(c.zoom):c.resolution&&this.setResolution(c.resolution),c.rotation!==void 0&&this.setRotation(c.rotation)}if(o===n){t&&Kl(t,!0);return}let i=Date.now(),r=this.targetCenter_.slice(),a=this.targetResolution_,u=this.targetRotation_;const s=[];for(;o<n;++o){const c=arguments[o],m={start:i,complete:!1,anchor:c.anchor,duration:c.duration!==void 0?c.duration:1e3,easing:c.easing||Si,callback:t};if(c.center&&(m.sourceCenter=r,m.targetCenter=c.center.slice(),r=m.targetCenter),c.zoom!==void 0?(m.sourceResolution=a,m.targetResolution=this.getResolutionForZoom(c.zoom),a=m.targetResolution):c.resolution&&(m.sourceResolution=a,m.targetResolution=c.resolution,a=m.targetResolution),c.rotation!==void 0){m.sourceRotation=u;const g=Ml(c.rotation-u+Math.PI,2*Math.PI)-Math.PI;m.targetRotation=u+g,u=m.targetRotation}sr(m)?m.complete=!0:i+=m.duration,s.push(m)}this.animations_.push(s),this.setHint(el.ANIMATING,1),this.updateAnimations_()}getAnimating(){return this.hints_[el.ANIMATING]>0}getInteracting(){return this.hints_[el.INTERACTING]>0}cancelAnimations(){this.setHint(el.ANIMATING,-this.hints_[el.ANIMATING]);let l;for(let n=0,t=this.animations_.length;n<t;++n){const o=this.animations_[n];if(o[0].callback&&Kl(o[0].callback,!1),!l)for(let i=0,r=o.length;i<r;++i){const a=o[i];if(!a.complete){l=a.anchor;break}}}this.animations_.length=0,this.cancelAnchor_=l,this.nextCenter_=null,this.nextResolution_=NaN,this.nextRotation_=NaN}updateAnimations_(){if(this.updateAnimationKey_!==void 0&&(cancelAnimationFrame(this.updateAnimationKey_),this.updateAnimationKey_=void 0),!this.getAnimating())return;const l=Date.now();let n=!1;for(let t=this.animations_.length-1;t>=0;--t){const o=this.animations_[t];let i=!0;for(let r=0,a=o.length;r<a;++r){const u=o[r];if(u.complete)continue;const s=l-u.start;let c=u.duration>0?s/u.duration:1;c>=1?(u.complete=!0,c=1):i=!1;const m=u.easing(c);if(u.sourceCenter){const g=u.sourceCenter[0],p=u.sourceCenter[1],d=u.targetCenter[0],f=u.targetCenter[1];this.nextCenter_=u.targetCenter;const b=g+m*(d-g),x=p+m*(f-p);this.targetCenter_=[b,x]}if(u.sourceResolution&&u.targetResolution){const g=m===1?u.targetResolution:u.sourceResolution+m*(u.targetResolution-u.sourceResolution);if(u.anchor){const p=this.getViewportSize_(this.getRotation()),d=this.constraints_.resolution(g,0,p,!0);this.targetCenter_=this.calculateCenterZoom(d,u.anchor)}this.nextResolution_=u.targetResolution,this.targetResolution_=g,this.applyTargetState_(!0)}if(u.sourceRotation!==void 0&&u.targetRotation!==void 0){const g=m===1?Ml(u.targetRotation+Math.PI,2*Math.PI)-Math.PI:u.sourceRotation+m*(u.targetRotation-u.sourceRotation);if(u.anchor){const p=this.constraints_.rotation(g,!0);this.targetCenter_=this.calculateCenterRotate(p,u.anchor)}this.nextRotation_=u.targetRotation,this.targetRotation_=g}if(this.applyTargetState_(!0),n=!0,!u.complete)break}if(i){this.animations_[t]=null,this.setHint(el.ANIMATING,-1),this.nextCenter_=null,this.nextResolution_=NaN,this.nextRotation_=NaN;const r=o[0].callback;r&&Kl(r,!0)}}this.animations_=this.animations_.filter(Boolean),n&&this.updateAnimationKey_===void 0&&(this.updateAnimationKey_=requestAnimationFrame(this.updateAnimations_.bind(this)))}calculateCenterRotate(l,n){let t;const o=this.getCenterInternal();return o!==void 0&&(t=[o[0]-n[0],o[1]-n[1]],go(t,l-this.getRotation()),bo(t,n)),t}calculateCenterZoom(l,n){let t;const o=this.getCenterInternal(),i=this.getResolution();if(o!==void 0&&i!==void 0){const r=n[0]-l*(n[0]-o[0])/i,a=n[1]-l*(n[1]-o[1])/i;t=[r,a]}return t}getViewportSize_(l){const n=this.viewportSize_;if(l){const t=n[0],o=n[1];return[Math.abs(t*Math.cos(l))+Math.abs(o*Math.sin(l)),Math.abs(t*Math.sin(l))+Math.abs(o*Math.cos(l))]}return n}setViewportSize(l){this.viewportSize_=Array.isArray(l)?l.slice():[100,100],this.getAnimating()||this.resolveConstraints(0)}getCenter(){const l=this.getCenterInternal();return l&&Re(l,this.getProjection())}getCenterInternal(){return this.get(J.CENTER)}getConstraints(){return this.constraints_}getConstrainResolution(){return this.get("constrainResolution")}getHints(l){return l!==void 0?(l[0]=this.hints_[0],l[1]=this.hints_[1],l):this.hints_.slice()}calculateExtent(l){const n=this.calculateExtentInternal(l);return Ho(n,this.getProjection())}calculateExtentInternal(l){l=l||this.getViewportSizeMinusPadding_();const n=this.getCenterInternal();ol(n,"The view center is not defined");const t=this.getResolution();ol(t!==void 0,"The view resolution is not defined");const o=this.getRotation();return ol(o!==void 0,"The view rotation is not defined"),He(n,t,o,l)}getMaxResolution(){return this.maxResolution_}getMinResolution(){return this.minResolution_}getMaxZoom(){return this.getZoomForResolution(this.minResolution_)}setMaxZoom(l){this.applyOptions_(this.getUpdatedOptions_({maxZoom:l}))}getMinZoom(){return this.getZoomForResolution(this.maxResolution_)}setMinZoom(l){this.applyOptions_(this.getUpdatedOptions_({minZoom:l}))}setConstrainResolution(l){this.applyOptions_(this.getUpdatedOptions_({constrainResolution:l}))}getProjection(){return this.projection_}getResolution(){return this.get(J.RESOLUTION)}getResolutions(){return this.resolutions_}getResolutionForExtent(l,n){return this.getResolutionForExtentInternal(El(l,this.getProjection()),n)}getResolutionForExtentInternal(l,n){n=n||this.getViewportSizeMinusPadding_();const t=O(l)/n[0],o=H(l)/n[1];return Math.max(t,o)}getResolutionForValueFunction(l){l=l||2;const n=this.getConstrainedResolution(this.maxResolution_),t=this.minResolution_,o=Math.log(n/t)/Math.log(l);return function(i){return n/Math.pow(l,i*o)}}getRotation(){return this.get(J.ROTATION)}getValueForResolutionFunction(l){const n=Math.log(l||2),t=this.getConstrainedResolution(this.maxResolution_),o=this.minResolution_,i=Math.log(t/o)/n;return function(r){return Math.log(t/r)/n/i}}getViewportSizeMinusPadding_(l){let n=this.getViewportSize_(l);const t=this.padding_;return t&&(n=[n[0]-t[1]-t[3],n[1]-t[0]-t[2]]),n}getState(){const l=this.getProjection(),n=this.getResolution(),t=this.getRotation();let o=this.getCenterInternal();const i=this.padding_;if(i){const r=this.getViewportSizeMinusPadding_();o=vn(o,this.getViewportSize_(),[r[0]/2+i[3],r[1]/2+i[0]],n,t)}return{center:o.slice(0),projection:l!==void 0?l:null,resolution:n,nextCenter:this.nextCenter_,nextResolution:this.nextResolution_,nextRotation:this.nextRotation_,rotation:t,zoom:this.getZoom()}}getViewStateAndExtent(){return{viewState:this.getState(),extent:this.calculateExtent()}}getZoom(){let l;const n=this.getResolution();return n!==void 0&&(l=this.getZoomForResolution(n)),l}getZoomForResolution(l){let n=this.minZoom_||0,t,o;if(this.resolutions_){const i=Yn(this.resolutions_,l,1);n=i,t=this.resolutions_[i],i==this.resolutions_.length-1?o=2:o=t/this.resolutions_[i+1]}else t=this.maxResolution_,o=this.zoomFactor_;return n+Math.log(t/l)/Math.log(o)}getResolutionForZoom(l){var n;if((n=this.resolutions_)!=null&&n.length){if(this.resolutions_.length===1)return this.resolutions_[0];const t=B(Math.floor(l),0,this.resolutions_.length-2),o=this.resolutions_[t]/this.resolutions_[t+1];return this.resolutions_[t]/Math.pow(o,B(l-t,0,1))}return this.maxResolution_/Math.pow(this.zoomFactor_,l-this.minZoom_)}fit(l,n){let t;if(ol(Array.isArray(l)||typeof l.getSimplifiedGeometry=="function","Invalid extent or geometry provided as `geometry`"),Array.isArray(l)){ol(!zl(l),"Cannot fit empty extent provided as `geometry`");const o=El(l,this.getProjection());t=Ne(o)}else if(l.getType()==="Circle"){const o=El(l.getExtent(),this.getProjection());t=Ne(o),t.rotate(this.getRotation(),wl(o))}else t=l;this.fitInternal(t,n)}rotatedExtentForGeometry(l){const n=this.getRotation(),t=Math.cos(n),o=Math.sin(-n),i=l.getFlatCoordinates(),r=l.getStride();let a=1/0,u=1/0,s=-1/0,c=-1/0;for(let m=0,g=i.length;m<g;m+=r){const p=i[m]*t-i[m+1]*o,d=i[m]*o+i[m+1]*t;a=Math.min(a,p),u=Math.min(u,d),s=Math.max(s,p),c=Math.max(c,d)}return[a,u,s,c]}fitInternal(l,n){n=n||{};let t=n.size;t||(t=this.getViewportSizeMinusPadding_());const o=n.padding!==void 0?n.padding:[0,0,0,0],i=n.nearest!==void 0?n.nearest:!1;let r;n.minResolution!==void 0?r=n.minResolution:n.maxZoom!==void 0?r=this.getResolutionForZoom(n.maxZoom):r=0;const a=this.rotatedExtentForGeometry(l);let u=this.getResolutionForExtentInternal(a,[t[0]-o[1]-o[3],t[1]-o[0]-o[2]]);u=isNaN(u)?r:Math.max(u,r),u=this.getConstrainedResolution(u,i?0:1);const s=this.getRotation(),c=Math.sin(s),m=Math.cos(s),g=wl(a);g[0]+=(o[1]-o[3])/2*u,g[1]+=(o[0]-o[2])/2*u;const p=g[0]*m-g[1]*c,d=g[1]*m+g[0]*c,f=this.getConstrainedCenter([p,d],u),b=n.callback?n.callback:On;n.duration!==void 0?this.animateInternal({resolution:u,center:f,duration:n.duration,easing:n.easing},b):(this.targetResolution_=u,this.targetCenter_=f,this.applyTargetState_(!1,!0),Kl(b,!0))}centerOn(l,n,t){this.centerOnInternal(al(l,this.getProjection()),n,t)}centerOnInternal(l,n,t){this.setCenterInternal(vn(l,n,t,this.getResolution(),this.getRotation()))}calculateCenterShift(l,n,t,o){let i;const r=this.padding_;if(r&&l){const a=this.getViewportSizeMinusPadding_(-t),u=vn(l,o,[a[0]/2+r[3],a[1]/2+r[0]],n,t);i=[l[0]-u[0],l[1]-u[1]]}return i}isDef(){return!!this.getCenterInternal()&&this.getResolution()!==void 0}adjustCenter(l){const n=Re(this.targetCenter_,this.getProjection());this.setCenter([n[0]+l[0],n[1]+l[1]])}adjustCenterInternal(l){const n=this.targetCenter_;this.setCenterInternal([n[0]+l[0],n[1]+l[1]])}adjustResolution(l,n){n=n&&al(n,this.getProjection()),this.adjustResolutionInternal(l,n)}adjustResolutionInternal(l,n){const t=this.getAnimating()||this.getInteracting(),o=this.getViewportSize_(this.getRotation()),i=this.constraints_.resolution(this.targetResolution_*l,0,o,t);n&&(this.targetCenter_=this.calculateCenterZoom(i,n)),this.targetResolution_*=l,this.applyTargetState_()}adjustZoom(l,n){this.adjustResolution(Math.pow(this.zoomFactor_,-l),n)}adjustRotation(l,n){n&&(n=al(n,this.getProjection())),this.adjustRotationInternal(l,n)}adjustRotationInternal(l,n){const t=this.getAnimating()||this.getInteracting(),o=this.constraints_.rotation(this.targetRotation_+l,t);n&&(this.targetCenter_=this.calculateCenterRotate(o,n)),this.targetRotation_+=l,this.applyTargetState_()}setCenter(l){this.setCenterInternal(l&&al(l,this.getProjection()))}setCenterInternal(l){this.targetCenter_=l,this.applyTargetState_()}setHint(l,n){return this.hints_[l]+=n,this.changed(),this.hints_[l]}setResolution(l){this.targetResolution_=l,this.applyTargetState_()}setRotation(l){this.targetRotation_=l,this.applyTargetState_()}setZoom(l){this.setResolution(this.getResolutionForZoom(l))}applyTargetState_(l,n){const t=this.getAnimating()||this.getInteracting()||n,o=this.constraints_.rotation(this.targetRotation_,t),i=this.getViewportSize_(o),r=this.constraints_.resolution(this.targetResolution_,0,i,t),a=this.constraints_.center(this.targetCenter_,r,i,t,this.calculateCenterShift(this.targetCenter_,r,o,i));this.get(J.ROTATION)!==o&&this.set(J.ROTATION,o),this.get(J.RESOLUTION)!==r&&(this.set(J.RESOLUTION,r),this.set("zoom",this.getZoom(),!0)),(!a||!this.get(J.CENTER)||!ln(this.get(J.CENTER),a))&&this.set(J.CENTER,a),this.getAnimating()&&!l&&this.cancelAnimations(),this.cancelAnchor_=void 0}resolveConstraints(l,n,t){l=l!==void 0?l:200;const o=n||0,i=this.constraints_.rotation(this.targetRotation_),r=this.getViewportSize_(i),a=this.constraints_.resolution(this.targetResolution_,o,r),u=this.constraints_.center(this.targetCenter_,a,r,!1,this.calculateCenterShift(this.targetCenter_,a,i,r));if(l===0&&!this.cancelAnchor_){this.targetResolution_=a,this.targetRotation_=i,this.targetCenter_=u,this.applyTargetState_();return}t=t||(l===0?this.cancelAnchor_:void 0),this.cancelAnchor_=void 0,(this.getResolution()!==a||this.getRotation()!==i||!this.getCenterInternal()||!ln(this.getCenterInternal(),u))&&(this.getAnimating()&&this.cancelAnimations(),this.animateInternal({rotation:i,center:u,resolution:a,duration:l,easing:wi,anchor:t}))}beginInteraction(){this.resolveConstraints(0),this.setHint(el.INTERACTING,1)}endInteraction(l,n,t){t=t&&al(t,this.getProjection()),this.endInteractionInternal(l,n,t)}endInteractionInternal(l,n,t){this.getInteracting()&&(this.setHint(el.INTERACTING,-1),this.resolveConstraints(l,n,t))}getConstrainedCenter(l,n){const t=this.getViewportSize_(this.getRotation());return this.constraints_.center(l,n||this.getResolution(),t)}getConstrainedZoom(l,n){const t=this.getResolutionForZoom(l);return this.getZoomForResolution(this.getConstrainedResolution(t,n))}getConstrainedResolution(l,n){n=n||0;const t=this.getViewportSize_(this.getRotation());return this.constraints_.resolution(l,n,t)}}function Kl(e,l){setTimeout(function(){e(l)},0)}function rr(e){if(e.extent!==void 0){const n=e.smoothExtentConstraint!==void 0?e.smoothExtentConstraint:!0;return Me(e.extent,e.constrainOnlyCenter,n)}const l=Bn(e.projection,"EPSG:3857");if(e.multiWorld!==!0&&l.isGlobal()){const n=l.getExtent().slice();return n[0]=-1/0,n[2]=1/0,Me(n,!1,!1)}return Ti}function ar(e){let l,n,t,r=e.minZoom!==void 0?e.minZoom:In,a=e.maxZoom!==void 0?e.maxZoom:28;const u=e.zoomFactor!==void 0?e.zoomFactor:2,s=e.multiWorld!==void 0?e.multiWorld:!1,c=e.smoothResolutionConstraint!==void 0?e.smoothResolutionConstraint:!0,m=e.showFullExtent!==void 0?e.showFullExtent:!1,g=Bn(e.projection,"EPSG:3857"),p=g.getExtent();let d=e.constrainOnlyCenter,f=e.extent;if(!s&&!f&&g.isGlobal()&&(d=!1,f=p),e.resolutions!==void 0){const b=e.resolutions;n=b[r],t=b[a]!==void 0?b[a]:b[b.length-1],e.constrainResolution?l=lr(b,c,!d&&f,m):l=Ve(n,t,c,!d&&f,m)}else{const x=(p?Math.max(O(p),H(p)):360*$e.degrees/g.getMetersPerUnit())/ir/Math.pow(2,In),h=x/Math.pow(2,28-In);n=e.maxResolution,n!==void 0?r=0:n=x/Math.pow(u,r),t=e.minResolution,t===void 0&&(e.maxZoom!==void 0?e.maxResolution!==void 0?t=n/Math.pow(u,a):t=x/Math.pow(u,a):t=h),a=r+Math.floor(Math.log(n/t)/Math.log(u)),t=n/Math.pow(u,a-r),e.constrainResolution?l=nr(u,n,t,c,!d&&f,m):l=Ve(n,t,c,!d&&f,m)}return{constraint:l,maxResolution:n,minResolution:t,minZoom:r,zoomFactor:u}}function ur(e){if(e.enableRotation!==void 0?e.enableRotation:!0){const n=e.constrainRotation;return n===void 0||n===!0?or():n===!1?Pe:typeof n=="number"?tr(n):Pe}return er}function sr(e){return!(e.sourceCenter&&e.targetCenter&&!ln(e.sourceCenter,e.targetCenter)||e.sourceResolution!==e.targetResolution||e.sourceRotation!==e.targetRotation)}function vn(e,l,n,t,o){const i=Math.cos(-o);let r=Math.sin(-o),a=e[0]*i-e[1]*r,u=e[1]*i+e[0]*r;a+=(l[0]/2-n[0])*t,u+=(n[1]-l[1]/2)*t,r=-r;const s=a*i-u*r,c=u*i+a*r;return[s,c]}const A={OPACITY:"opacity",VISIBLE:"visible",EXTENT:"extent",Z_INDEX:"zIndex",MAX_RESOLUTION:"maxResolution",MIN_RESOLUTION:"minResolution",MAX_ZOOM:"maxZoom",MIN_ZOOM:"minZoom",SOURCE:"source",MAP:"map"};class cr extends bn{constructor(l){super(),this.on,this.once,this.un,this.background_=l.background;const n=Object.assign({},l);typeof l.properties=="object"&&(delete n.properties,Object.assign(n,l.properties)),n[A.OPACITY]=l.opacity!==void 0?l.opacity:1,ol(typeof n[A.OPACITY]=="number","Layer opacity must be a number"),n[A.VISIBLE]=l.visible!==void 0?l.visible:!0,n[A.Z_INDEX]=l.zIndex,n[A.MAX_RESOLUTION]=l.maxResolution!==void 0?l.maxResolution:1/0,n[A.MIN_RESOLUTION]=l.minResolution!==void 0?l.minResolution:0,n[A.MIN_ZOOM]=l.minZoom!==void 0?l.minZoom:-1/0,n[A.MAX_ZOOM]=l.maxZoom!==void 0?l.maxZoom:1/0,this.className_=n.className!==void 0?n.className:"ol-layer",delete n.className,this.setProperties(n),this.state_=null}getBackground(){return this.background_}getClassName(){return this.className_}getLayerState(l){const n=this.state_||{layer:this,managed:l===void 0?!0:l},t=this.getZIndex();return n.opacity=B(Math.round(this.getOpacity()*100)/100,0,1),n.visible=this.getVisible(),n.extent=this.getExtent(),n.zIndex=t===void 0&&!n.managed?1/0:t,n.maxResolution=this.getMaxResolution(),n.minResolution=Math.max(this.getMinResolution(),0),n.minZoom=this.getMinZoom(),n.maxZoom=this.getMaxZoom(),this.state_=n,n}getLayersArray(l){return F()}getLayerStatesArray(l){return F()}getExtent(){return this.get(A.EXTENT)}getMaxResolution(){return this.get(A.MAX_RESOLUTION)}getMinResolution(){return this.get(A.MIN_RESOLUTION)}getMinZoom(){return this.get(A.MIN_ZOOM)}getMaxZoom(){return this.get(A.MAX_ZOOM)}getOpacity(){return this.get(A.OPACITY)}getSourceState(){return F()}getVisible(){return this.get(A.VISIBLE)}getZIndex(){return this.get(A.Z_INDEX)}setBackground(l){this.background_=l,this.changed()}setExtent(l){this.set(A.EXTENT,l)}setMaxResolution(l){this.set(A.MAX_RESOLUTION,l)}setMinResolution(l){this.set(A.MIN_RESOLUTION,l)}setMaxZoom(l){this.set(A.MAX_ZOOM,l)}setMinZoom(l){this.set(A.MIN_ZOOM,l)}setOpacity(l){ol(typeof l=="number","Layer opacity must be a number"),this.set(A.OPACITY,l)}setVisible(l){this.set(A.VISIBLE,l)}setZIndex(l){this.set(A.Z_INDEX,l)}disposeInternal(){this.state_&&(this.state_.layer=null,this.state_=null),super.disposeInternal()}}class mr extends cr{constructor(l){const n=Object.assign({},l);delete n.source,super(n),this.on,this.once,this.un,this.mapPrecomposeKey_=null,this.mapRenderKey_=null,this.sourceChangeKey_=null,this.renderer_=null,this.sourceReady_=!1,this.rendered=!1,l.render&&(this.render=l.render),l.map&&this.setMap(l.map),this.addChangeListener(A.SOURCE,this.handleSourcePropertyChange_);const t=l.source?l.source:null;this.setSource(t)}getLayersArray(l){return l=l||[],l.push(this),l}getLayerStatesArray(l){return l=l||[],l.push(this.getLayerState()),l}getSource(){return this.get(A.SOURCE)||null}getRenderSource(){return this.getSource()}getSourceState(){const l=this.getSource();return l?l.getState():"undefined"}handleSourceChange_(){this.changed(),!(this.sourceReady_||this.getSource().getState()!=="ready")&&(this.sourceReady_=!0,this.dispatchEvent("sourceready"))}handleSourcePropertyChange_(){this.sourceChangeKey_&&(Al(this.sourceChangeKey_),this.sourceChangeKey_=null),this.sourceReady_=!1;const l=this.getSource();l&&(this.sourceChangeKey_=pl(l,ml.CHANGE,this.handleSourceChange_,this),l.getState()==="ready"&&(this.sourceReady_=!0,setTimeout(()=>{this.dispatchEvent("sourceready")},0))),this.changed()}getFeatures(l){return this.renderer_?this.renderer_.getFeatures(l):Promise.resolve([])}getData(l){return!this.renderer_||!this.rendered?null:this.renderer_.getData(l)}isVisible(l){let n;const t=this.getMapInternal();!l&&t&&(l=t.getView()),l instanceof Oe?n={viewState:l.getState(),extent:l.calculateExtent()}:n=l,!n.layerStatesArray&&t&&(n.layerStatesArray=t.getLayerGroup().getLayerStatesArray());let o;if(n.layerStatesArray){if(o=n.layerStatesArray.find(r=>r.layer===this),!o)return!1}else o=this.getLayerState();const i=this.getExtent();return br(o,n.viewState)&&(!i||Vl(i,n.extent))}getAttributions(l){var i;if(!this.isVisible(l))return[];const n=(i=this.getSource())==null?void 0:i.getAttributions();if(!n)return[];const t=l instanceof Oe?l.getViewStateAndExtent():l;let o=n(t);return Array.isArray(o)||(o=[o]),o}render(l,n){const t=this.getRenderer();return t.prepareFrame(l)?(this.rendered=!0,t.renderFrame(l,n)):null}unrender(){this.rendered=!1}getDeclutter(){}renderDeclutter(l,n){}renderDeferred(l){const n=this.getRenderer();n&&n.renderDeferred(l)}setMapInternal(l){l||this.unrender(),this.set(A.MAP,l)}getMapInternal(){return this.get(A.MAP)}setMap(l){this.mapPrecomposeKey_&&(Al(this.mapPrecomposeKey_),this.mapPrecomposeKey_=null),l||this.changed(),this.mapRenderKey_&&(Al(this.mapRenderKey_),this.mapRenderKey_=null),l&&(this.mapPrecomposeKey_=pl(l,Fl.PRECOMPOSE,this.handlePrecompose_,this),this.mapRenderKey_=pl(this,ml.CHANGE,l.render,l),this.changed())}handlePrecompose_(l){const n=l.frameState.layerStatesArray,t=this.getLayerState(!1);ol(!n.some(o=>o.layer===t.layer),"A layer can only be added to the map once. Use either `layer.setMap()` or `map.addLayer()`, not both."),n.push(t)}setSource(l){this.set(A.SOURCE,l)}getRenderer(){return this.renderer_||(this.renderer_=this.createRenderer()),this.renderer_}hasRenderer(){return!!this.renderer_}createRenderer(){return null}clearRenderer(){this.renderer_&&(this.renderer_.dispose(),delete this.renderer_)}disposeInternal(){this.clearRenderer(),this.setSource(null),super.disposeInternal()}}function br(e,l){if(!e.visible)return!1;const n=l.resolution;if(n<e.minResolution||n>=e.maxResolution)return!1;const t=l.zoom;return t>e.minZoom&&t<=e.maxZoom}class gr extends mr{constructor(l){l=l||{},super(l)}}class dr extends gr{constructor(l){super(l)}createRenderer(){return new Ci(this)}getData(l){return super.getData(l)}}class le extends st{constructor(l,n,t,o){super(),this.extent=l,this.pixelRatio_=t,this.resolution=n,this.state=typeof o=="function"?V.IDLE:o,this.image_=null,this.loader=typeof o=="function"?o:null}changed(){this.dispatchEvent(ml.CHANGE)}getExtent(){return this.extent}getImage(){return this.image_}getPixelRatio(){return this.pixelRatio_}getResolution(){return this.resolution}getState(){return this.state}load(){if(this.state==V.IDLE&&this.loader){this.state=V.LOADING,this.changed();const l=this.getResolution(),n=Array.isArray(l)?l[0]:l;xi(()=>this.loader(this.getExtent(),n,this.getPixelRatio())).then(t=>{"image"in t&&(this.image_=t.image),"extent"in t&&(this.extent=t.extent),"resolution"in t&&(this.resolution=t.resolution),"pixelRatio"in t&&(this.pixelRatio_=t.pixelRatio),(t instanceof HTMLImageElement||rt&&t instanceof ImageBitmap||t instanceof HTMLCanvasElement||t instanceof HTMLVideoElement)&&(this.image_=t),this.state=V.LOADED}).catch(t=>{this.state=V.ERROR,console.error(t)}).finally(()=>this.changed())}}setImage(l){this.image_=l}setResolution(l){this.resolution=l}}function pr(e,l){return new Promise((n,t)=>{function o(){r(),n(e)}function i(){r(),t(new Error("Image load error"))}function r(){e.removeEventListener("load",o),e.removeEventListener("error",i)}e.addEventListener("load",o),e.addEventListener("error",i)})}function hr(e,l){return e.src&&it?new Promise((n,t)=>e.decode().then(()=>n(e)).catch(o=>e.complete&&e.width?n(e):t(o))):pr(e)}function Rt(e,l){return l&&(e.src=l),e.src&&it&&rt?e.decode().then(()=>createImageBitmap(e)).catch(n=>{if(e.complete&&e.width)return e;throw n}):hr(e)}let En;const jl=[];function De(e,l,n,t,o){e.beginPath(),e.moveTo(0,0),e.lineTo(l,n),e.lineTo(t,o),e.closePath(),e.save(),e.clip(),e.fillRect(0,0,Math.max(l,t)+1,Math.max(n,o)),e.restore()}function Cn(e,l){return Math.abs(e[l*4]-210)>2||Math.abs(e[l*4+3]-.75*255)>2}function xr(){if(En===void 0){const e=xl(6,6,jl);e.globalCompositeOperation="lighter",e.fillStyle="rgba(210, 0, 0, 0.75)",De(e,4,5,4,0),De(e,4,5,0,5);const l=e.getImageData(0,0,3,3).data;En=Cn(l,0)||Cn(l,4)||Cn(l,8),at(e),jl.push(e.canvas)}return En}function fr(e,l,n,t){const o=cn(n,l,e);let i=he(l,t,n);const r=l.getMetersPerUnit();r!==void 0&&(i*=r);const a=e.getMetersPerUnit();a!==void 0&&(i/=a);const u=e.getExtent();if(!u||ze(u,o)){const s=he(e,i,o)/i;isFinite(s)&&s>0&&(i/=s)}return i}function Rr(e,l,n,t,o,i,r,a,u,s,c,m,g,p){const d=xl(Math.round(n*e),Math.round(n*l),jl);if(m||(d.imageSmoothingEnabled=!1),u.length===0)return d.canvas;d.scale(n,n);function f(_){return Math.round(_*n)/n}d.globalCompositeOperation="lighter";const b=Nl();u.forEach(function(_,v,M){eo(b,_.extent)});let x;const h=n/t,R=(m?1:1+Math.pow(2,-24))/h;(u.length!==1||s!==0)&&(x=xl(Math.round(O(b)*h),Math.round(H(b)*h),jl),m||(x.imageSmoothingEnabled=!1),u.forEach(function(_,v,M){if(_.image.width>0&&_.image.height>0){if(_.clipExtent){x.save();const S=(_.clipExtent[0]-b[0])*h,k=-(_.clipExtent[3]-b[3])*h,D=O(_.clipExtent)*h,G=H(_.clipExtent)*h;x.rect(m?S:Math.round(S),m?k:Math.round(k),m?D:Math.round(S+D)-Math.round(S),m?G:Math.round(k+G)-Math.round(k)),x.clip()}const E=(_.extent[0]-b[0])*h,C=-(_.extent[3]-b[3])*h,w=O(_.extent)*h,T=H(_.extent)*h;x.drawImage(_.image,s,s,_.image.width-2*s,_.image.height-2*s,m?E:Math.round(E),m?C:Math.round(C),m?w:Math.round(E+w)-Math.round(E),m?T:Math.round(C+T)-Math.round(C)),_.clipExtent&&x.restore()}}));const y=an(r);return a.getTriangles().forEach(function(_,v,M){const E=_.source,C=_.target;let w=E[0][0],T=E[0][1],S=E[1][0],k=E[1][1],D=E[2][0],G=E[2][1];const X=f((C[0][0]-y[0])/i),P=f(-(C[0][1]-y[1])/i),q=f((C[1][0]-y[0])/i),rl=f(-(C[1][1]-y[1])/i),Pl=f((C[2][0]-y[0])/i),Zl=f(-(C[2][1]-y[1])/i),N=w,U=T;w=0,T=0,S-=N,k-=U,D-=N,G-=U;const Hl=[[S,k,0,0,q-X],[D,G,0,0,Pl-X],[0,0,S,k,rl-P],[0,0,D,G,Zl-P]],$=co(Hl);if(!$)return;if(d.save(),d.beginPath(),xr()||!m){d.moveTo(q,rl);const W=4,z=X-q,fl=P-rl;for(let nl=0;nl<W;nl++)d.lineTo(q+f((nl+1)*z/W),rl+f(nl*fl/(W-1))),nl!=W-1&&d.lineTo(q+f((nl+1)*z/W),rl+f((nl+1)*fl/(W-1)));d.lineTo(Pl,Zl)}else d.moveTo(q,rl),d.lineTo(X,P),d.lineTo(Pl,Zl);d.clip(),d.transform($[0],$[2],$[1],$[3],X,P),d.translate(b[0]-N,b[3]-U);let Y;if(x)Y=x.canvas,d.scale(R,-R);else{const W=u[0],z=W.extent;Y=W.image,d.scale(O(z)/Y.width,-H(z)/Y.height)}d.drawImage(Y,0,0),d.restore()}),x&&(at(x),jl.push(x.canvas)),d.canvas}function Dn(e){return Array.isArray(e)?Math.min(...e):e}const yr=10,Le=.25;class _r{constructor(l,n,t,o,i,r,a){this.sourceProj_=l,this.targetProj_=n;let u={};const s=a?Xo(R=>tl(a,cn(R,this.targetProj_,this.sourceProj_))):tn(this.targetProj_,this.sourceProj_);this.transformInv_=function(R){const y=R[0]+"/"+R[1];return u[y]||(u[y]=s(R)),u[y]},this.maxSourceExtent_=o,this.errorThresholdSquared_=i*i,this.triangles_=[],this.wrapsXInSource_=!1,this.canWrapXInSource_=this.sourceProj_.canWrapX()&&!!o&&!!this.sourceProj_.getExtent()&&O(o)>=O(this.sourceProj_.getExtent()),this.sourceWorldWidth_=this.sourceProj_.getExtent()?O(this.sourceProj_.getExtent()):null,this.targetWorldWidth_=this.targetProj_.getExtent()?O(this.targetProj_.getExtent()):null;const c=an(t),m=zn(t),g=Wn(t),p=Gn(t),d=this.transformInv_(c),f=this.transformInv_(m),b=this.transformInv_(g),x=this.transformInv_(p),h=yr+(r?Math.max(0,Math.ceil(Math.log2(io(t)/(r*r*256*256)))):0);if(this.addQuad_(c,m,g,p,d,f,b,x,h),this.wrapsXInSource_){let R=1/0;this.triangles_.forEach(function(y,_,v){R=Math.min(R,y.source[0][0],y.source[1][0],y.source[2][0])}),this.triangles_.forEach(y=>{if(Math.max(y.source[0][0],y.source[1][0],y.source[2][0])-R>this.sourceWorldWidth_/2){const _=[[y.source[0][0],y.source[0][1]],[y.source[1][0],y.source[1][1]],[y.source[2][0],y.source[2][1]]];_[0][0]-R>this.sourceWorldWidth_/2&&(_[0][0]-=this.sourceWorldWidth_),_[1][0]-R>this.sourceWorldWidth_/2&&(_[1][0]-=this.sourceWorldWidth_),_[2][0]-R>this.sourceWorldWidth_/2&&(_[2][0]-=this.sourceWorldWidth_);const v=Math.min(_[0][0],_[1][0],_[2][0]);Math.max(_[0][0],_[1][0],_[2][0])-v<this.sourceWorldWidth_/2&&(y.source=_)}})}u={}}addTriangle_(l,n,t,o,i,r){this.triangles_.push({source:[o,i,r],target:[l,n,t]})}addQuad_(l,n,t,o,i,r,a,u,s){const c=ie([i,r,a,u]),m=this.sourceWorldWidth_?O(c)/this.sourceWorldWidth_:null,g=this.sourceWorldWidth_,p=this.sourceProj_.canWrapX()&&m>.5&&m<1;let d=!1;if(s>0){if(this.targetProj_.isGlobal()&&this.targetWorldWidth_){const b=ie([l,n,t,o]);d=O(b)/this.targetWorldWidth_>Le||d}!p&&this.sourceProj_.isGlobal()&&m&&(d=m>Le||d)}if(!d&&this.maxSourceExtent_&&isFinite(c[0])&&isFinite(c[1])&&isFinite(c[2])&&isFinite(c[3])&&!Vl(c,this.maxSourceExtent_))return;let f=0;if(!d&&(!isFinite(i[0])||!isFinite(i[1])||!isFinite(r[0])||!isFinite(r[1])||!isFinite(a[0])||!isFinite(a[1])||!isFinite(u[0])||!isFinite(u[1]))){if(s>0)d=!0;else if(f=(!isFinite(i[0])||!isFinite(i[1])?8:0)+(!isFinite(r[0])||!isFinite(r[1])?4:0)+(!isFinite(a[0])||!isFinite(a[1])?2:0)+(!isFinite(u[0])||!isFinite(u[1])?1:0),f!=1&&f!=2&&f!=4&&f!=8)return}if(s>0){if(!d){const b=[(l[0]+t[0])/2,(l[1]+t[1])/2],x=this.transformInv_(b);let h;p?h=(Ml(i[0],g)+Ml(a[0],g))/2-Ml(x[0],g):h=(i[0]+a[0])/2-x[0];const R=(i[1]+a[1])/2-x[1];d=h*h+R*R>this.errorThresholdSquared_}if(d){if(Math.abs(l[0]-t[0])<=Math.abs(l[1]-t[1])){const b=[(n[0]+t[0])/2,(n[1]+t[1])/2],x=this.transformInv_(b),h=[(o[0]+l[0])/2,(o[1]+l[1])/2],R=this.transformInv_(h);this.addQuad_(l,n,b,h,i,r,x,R,s-1),this.addQuad_(h,b,t,o,R,x,a,u,s-1)}else{const b=[(l[0]+n[0])/2,(l[1]+n[1])/2],x=this.transformInv_(b),h=[(t[0]+o[0])/2,(t[1]+o[1])/2],R=this.transformInv_(h);this.addQuad_(l,b,h,o,i,x,R,u,s-1),this.addQuad_(b,n,t,h,x,r,a,R,s-1)}return}}if(p){if(!this.canWrapXInSource_)return;this.wrapsXInSource_=!0}f&11||this.addTriangle_(l,t,o,i,a,u),f&14||this.addTriangle_(l,t,n,i,a,r),f&&(f&13||this.addTriangle_(n,o,l,r,u,i),f&7||this.addTriangle_(n,o,t,r,u,a))}calculateSourceExtent(){const l=Nl();return this.triangles_.forEach(function(n,t,o){const i=n.source;Jl(l,i[0]),Jl(l,i[1]),Jl(l,i[2])}),l}getTriangles(){return this.triangles_}}const Ir=.5;class vr extends le{constructor(l,n,t,o,i,r,a){let u=l.getExtent();u&&l.canWrapX()&&(u=u.slice(),u[0]=-1/0,u[2]=1/0);let s=n.getExtent();s&&n.canWrapX()&&(s=s.slice(),s[0]=-1/0,s[2]=1/0);const c=s?Ue(t,s):t,m=wl(c),g=fr(l,n,m,o),p=Ir,d=new _r(l,n,c,u,g*p,o),f=d.calculateSourceExtent(),b=zl(f)?null:r(f,g,i),x=b?V.IDLE:V.EMPTY,h=b?b.getPixelRatio():1;super(t,o,h,x),this.targetProj_=n,this.maxSourceExtent_=u,this.triangulation_=d,this.targetResolution_=o,this.targetExtent_=t,this.sourceImage_=b,this.sourcePixelRatio_=h,this.interpolate_=a,this.canvas_=null,this.sourceListenerKey_=null}disposeInternal(){this.state==V.LOADING&&this.unlistenSource_(),super.disposeInternal()}getImage(){return this.canvas_}getProjection(){return this.targetProj_}reproject_(){const l=this.sourceImage_.getState();if(l==V.LOADED){const n=O(this.targetExtent_)/this.targetResolution_,t=H(this.targetExtent_)/this.targetResolution_;this.canvas_=Rr(n,t,this.sourcePixelRatio_,Dn(this.sourceImage_.getResolution()),this.maxSourceExtent_,this.targetResolution_,this.targetExtent_,this.triangulation_,[{extent:this.sourceImage_.getExtent(),image:this.sourceImage_.getImage()}],0,void 0,this.interpolate_)}this.state=l,this.changed()}load(){if(this.state==V.IDLE){this.state=V.LOADING,this.changed();const l=this.sourceImage_.getState();l==V.LOADED||l==V.ERROR?this.reproject_():(this.sourceListenerKey_=pl(this.sourceImage_,ml.CHANGE,n=>{const t=this.sourceImage_.getState();(t==V.LOADED||t==V.ERROR)&&(this.unlistenSource_(),this.reproject_())}),this.sourceImage_.load())}}unlistenSource_(){Al(this.sourceListenerKey_),this.sourceListenerKey_=null}}class Er extends bn{constructor(l){super(),this.projection=ll(l.projection),this.attributions_=Fe(l.attributions),this.attributionsCollapsible_=l.attributionsCollapsible??!0,this.loading=!1,this.state_=l.state!==void 0?l.state:"ready",this.wrapX_=l.wrapX!==void 0?l.wrapX:!1,this.interpolate_=!!l.interpolate,this.viewResolver=null,this.viewRejector=null;const n=this;this.viewPromise_=new Promise(function(t,o){n.viewResolver=t,n.viewRejector=o})}getAttributions(){return this.attributions_}getAttributionsCollapsible(){return this.attributionsCollapsible_}getProjection(){return this.projection}getResolutions(l){return null}getView(){return this.viewPromise_}getState(){return this.state_}getWrapX(){return this.wrapX_}getInterpolate(){return this.interpolate_}refresh(){this.changed()}setAttributions(l){this.attributions_=Fe(l),this.changed()}setState(l){this.state_=l,this.changed()}}function Fe(e){return e?typeof e=="function"?e:(Array.isArray(e)||(e=[e]),l=>e):null}const ql=4,Mn={IMAGELOADSTART:"imageloadstart",IMAGELOADEND:"imageloadend",IMAGELOADERROR:"imageloaderror"};class Cr extends mn{constructor(l,n){super(l),this.image=n}}class Mr extends Er{constructor(l){super({attributions:l.attributions,projection:l.projection,state:l.state,interpolate:l.interpolate!==void 0?l.interpolate:!0}),this.on,this.once,this.un,this.loader=l.loader||null,this.resolutions_=l.resolutions!==void 0?l.resolutions:null,this.reprojectedImage_=null,this.reprojectedRevision_=0,this.image=null,this.wantedExtent_,this.wantedResolution_,this.static_=l.loader?l.loader.length===0:!1,this.wantedProjection_=null}getResolutions(){return this.resolutions_}setResolutions(l){this.resolutions_=l}findNearestResolution(l){const n=this.getResolutions();if(n){const t=Yn(n,l,0);l=n[t]}return l}getImage(l,n,t,o){const i=this.getProjection();if(!i||!o||fe(i,o))return i&&(o=i),this.getImageInternal(l,n,t,o);if(this.reprojectedImage_){if(this.reprojectedRevision_==this.getRevision()&&fe(this.reprojectedImage_.getProjection(),o)&&this.reprojectedImage_.getResolution()==n&&no(this.reprojectedImage_.getExtent(),l))return this.reprojectedImage_;this.reprojectedImage_.dispose(),this.reprojectedImage_=null}return this.reprojectedImage_=new vr(i,o,l,n,t,(r,a,u)=>this.getImageInternal(r,a,u,i),this.getInterpolate()),this.reprojectedRevision_=this.getRevision(),this.reprojectedImage_}getImageInternal(l,n,t,o){if(this.loader){const i=Ar(l,n,t,1),r=this.findNearestResolution(n);if(this.image&&(this.static_||this.wantedProjection_===o&&(this.wantedExtent_&&wn(this.wantedExtent_,i)||wn(this.image.getExtent(),i))&&(this.wantedResolution_&&Dn(this.wantedResolution_)===r||Dn(this.image.getResolution())===r)))return this.image;this.wantedProjection_=o,this.wantedExtent_=i,this.wantedResolution_=r,this.image=new le(i,r,t,this.loader),this.image.addEventListener(ml.CHANGE,this.handleImageChange.bind(this))}return this.image}handleImageChange(l){const n=l.target;let t;switch(n.getState()){case V.LOADING:this.loading=!0,t=Mn.IMAGELOADSTART;break;case V.LOADED:this.loading=!1,t=Mn.IMAGELOADEND;break;case V.ERROR:this.loading=!1,t=Mn.IMAGELOADERROR;break;default:return}this.hasListener(t)&&this.dispatchEvent(new Cr(t,n))}}function Tr(e,l){e.getImage().src=l}function Ar(e,l,n,t){const o=l/n,i=wl(e),r=Bl(O(e)/o,ql),a=Bl(H(e)/o,ql),u=Bl((t-1)*r/2,ql),s=r+2*u,c=Bl((t-1)*a/2,ql),m=a+2*c;return He(i,o,0,[s,m])}function wr(e){const l=e.load||Rt,n=e.imageExtent,t=e.crossOrigin??null;return()=>{const o=new Image;return o.crossOrigin=t,e.referrerPolicy!==void 0&&(o.referrerPolicy=e.referrerPolicy),l(o,e.url).then(i=>{const r=O(n)/i.width,a=H(n)/i.height;return{image:i,extent:n,resolution:r!==a?[r,a]:a,pixelRatio:1}})}}class Sr extends Mr{constructor(l){const n=l.crossOrigin!==void 0?l.crossOrigin:null,t=l.imageLoadFunction!==void 0?l.imageLoadFunction:Tr;super({attributions:l.attributions,interpolate:l.interpolate,projection:ll(l.projection)}),this.url_=l.url,this.imageExtent_=l.imageExtent,this.image=null,this.image=new le(this.imageExtent_,void 0,1,wr({url:l.url,imageExtent:l.imageExtent,crossOrigin:n,referrerPolicy:l.referrerPolicy,load:(o,i)=>(this.image.setImage(o),t(this.image,i),Rt(o))})),this.image.addEventListener(ml.CHANGE,this.handleImageChange.bind(this))}getImageExtent(){return this.imageExtent_}getImageInternal(l,n,t,o){return Vl(l,this.image.getExtent())?this.image:null}getUrl(){return this.url_}}function Nr(){console.log("useMapRendering");const e=I.ref(!1),l=I.ref(null),n=I.ref(null),t=I.ref(null),o=I.reactive({colormap:"viridis",opacity:.8,showBounds:!0,autoFit:!0,resampleTo:null,minValue:null,maxValue:null});async function i(p,d,f,b,x){var h,R,y,_;e.value=!0,l.value=null;try{const v=p.data;if(!v||v.length===0)throw new Error("No data available");const M=((R=(h=d.dimensions)==null?void 0:h.lon)==null?void 0:R.size)??0,E=((_=(y=d.dimensions)==null?void 0:y.lat)==null?void 0:_.size)??0;if(M===0||E===0)throw new Error("Invalid dimension sizes");let C;b?C=b:C=a(M,E);const T=(await r(v,M,E,x)).canvas.toDataURL("image/png");console.log("Image URL:",T);const S=new dr({source:new Sr({url:T,imageExtent:C,projection:"EPSG:4326"}),opacity:o.opacity});return f.addLayer(S),o.autoFit&&f.getView().fit(C,{size:f.getSize(),padding:[20,20,20,20]}),n.value=S,t.value=C,S}catch(v){const M=v instanceof Error?v.message:String(v);throw l.value=M,v}finally{e.value=!1}}async function r(p,d,f,b){let x=p,h=d,R=f;if(o.resampleTo){const[E,C]=o.resampleTo;E>0&&C>0&&(x=Bt(p,[f,d],[C,E]),h=E,R=C)}if(b){const E=await Ln(b);if(E){const C=kt(E),w=Ut(x,C),T=An(h,R);return ee(T,w,h,R),{canvas:T,pixelData:w,normalizedData:null,width:h,height:R}}}const y=Zt(x,o.minValue??void 0,o.maxValue??void 0),_=Tn(o.colormap),v=Ht(y,_),M=An(h,R);return ee(M,v,h,R),{canvas:M,pixelData:v,normalizedData:y,width:h,height:R}}function a(p,d){return[-180,-60,180,85]}function u(p){o.opacity=Math.max(0,Math.min(1,p)),n.value&&n.value.setOpacity(o.opacity)}async function s(p,d,f,b){var x,h;if(o.colormap=p,n.value&&d&&f)try{const R=((h=(x=n.value).getMap)==null?void 0:h.call(x))??n.value.get("map");c(),R&&await i(d,f,R,void 0,b)}catch(R){console.error("更新色彩方案时出错:",R)}}function c(){var p,d;if(n.value){const f=((d=(p=n.value).getMap)==null?void 0:d.call(p))??n.value.get("map");f&&f.removeLayer(n.value),n.value=null,t.value=null}}function m(p,d,f){if(!t.value||!(d!=null&&d.data))return null;const b=d.data,x=d.shape??[],h=d.dimensions??[],R=h.indexOf("lon"),y=h.indexOf("lat");if(R===-1||y===-1)return null;const _=x[R]??0,v=x[y]??0;if(_===0||v===0)return null;const[M,E,C,w]=t.value,T=Math.floor((p.lng-M)/(C-M)*(_-1)),S=Math.floor((p.lat-E)/(w-E)*(v-1)),k=v-1-S,D=Math.max(0,Math.min(_-1,T)),X=Math.max(0,Math.min(v-1,k))*_+D;return X>=0&&X<b.length?b[X]:null}function g(){c(),e.value=!1,l.value=null,o.colormap="viridis",o.opacity=.8,o.showBounds=!0,o.autoFit=!0,o.resampleTo=null,o.minValue=null,o.maxValue=null}return{isLoading:e,error:l,overlay:n,bounds:t,options:o,createDataOverlay:i,updateOpacity:u,updateColormap:s,removeOverlay:c,getValueAtCoordinate:m,reset:g}}function Vr(e,l,n,t,o,i){let r=null,a=null,u=null;console.log("useGridLabels执行",e,l,n,t,o);const s=I.ref(document.getElementById("xmGridLabelsCanvas")||null);function c(){const b=s.value,x=b==null?void 0:b.parentElement;!b||!x||(b.width=x.clientWidth,b.height=x.clientHeight)}function m(){const b=s.value;if(!b)return;const x=b.getContext("2d");x&&x.clearRect(0,0,b.width,b.height)}function g(){const b=s.value,x=e.value,h=l.value,R=n.value;if(!b||!x||!h||!R)return;const y=b.getContext("2d");if(!y)return;const _=b.width,v=b.height;y.clearRect(0,0,_,v);const M=o.value;y.font="11px monospace",y.textAlign="center",y.textBaseline="middle";for(let E=M/2;E<_;E+=M)for(let C=M/2;C<v;C+=M){const w=[E,C],T=x.getCoordinateFromPixel(w),[S,k]=T,D=i({lat:k,lng:S},h,R);if(D===null||!isFinite(D))continue;const G=D.toFixed(1);y.strokeStyle="rgba(0, 0, 0, 0.72)",y.lineWidth=3,y.lineJoin="round",y.strokeText(G,E,C),y.fillStyle="white",y.fillText(G,E,C)}}function p(){console.log(t.value,e.value,s.value,l.value,n.value,"重绘标签"),!(!t.value||!e.value||!s.value||!l.value||!n.value)&&g()}function d(b){a=()=>p(),u=()=>p(),b.on("moveend",a),b.getView().on("change:resolution",u)}function f(b){a&&b.un("moveend",a),u&&b.getView().un("change:resolution",u),a=null,u=null}I.watch(e,(b,x)=>{console.log("地图变化",b,x),x&&f(x),b&&(d(b),c(),p())},{immediate:!0}),I.watch(s,b=>{r&&(r.disconnect(),r=null),b!=null&&b.parentElement&&(r=new ResizeObserver(()=>{c(),p()}),r.observe(b.parentElement))},{immediate:!0}),I.watch(t,b=>{console.log("enabled 变化",b),b?(console.log("绘制标签数值",t),c(),p()):m()},{immediate:!0}),I.watch(l,()=>{console.log("variableData 变化",l),p()},{immediate:!0,deep:!0}),I.onUnmounted(()=>{console.log("地图销毁--组件内部清理"),e.value&&f(e.value),r&&(r.disconnect(),r=null)})}class Pr{constructor(l={}){L(this,"options");L(this,"isRendering",!1);L(this,"currentChunk",0);L(this,"totalChunks",0);L(this,"onProgress",null);L(this,"onComplete",null);this.options={chunkSize:1e5,delayBetweenChunks:10,...l}}async render(l,n,t=null,o=null){if(this.isRendering)throw new Error("Already rendering");this.isRendering=!0,this.currentChunk=0,this.totalChunks=Math.ceil(l.length/this.options.chunkSize),this.onProgress=t,this.onComplete=o;for(let i=0;i<l.length&&this.isRendering;i+=this.options.chunkSize){const r=l.slice(i,i+this.options.chunkSize),a=Math.floor(i/this.options.chunkSize);await n(r,a,i),this.currentChunk=a+1,this.onProgress&&this.onProgress({current:this.currentChunk,total:this.totalChunks,percent:Math.round(this.currentChunk/this.totalChunks*100)}),this.options.delayBetweenChunks>0&&await new Promise(u=>setTimeout(u,this.options.delayBetweenChunks))}this.isRendering=!1,this.onComplete&&this.onComplete()}cancel(){this.isRendering=!1}getProgress(){return{current:this.currentChunk,total:this.totalChunks,percent:this.totalChunks>0?Math.round(this.currentChunk/this.totalChunks*100):0,isRendering:this.isRendering}}}function Or(e,l){let n;return function(...o){const i=()=>{clearTimeout(n),e(...o)};clearTimeout(n),n=setTimeout(i,l)}}function Dr(e,l){let n=!1;return function(...o){n||(e(...o),n=!0,setTimeout(()=>{n=!1},l))}}const Lr=(e,l,n)=>{console.log("info-getFileData接收得参数",l);const t=I.reactive({variableData:null,metadata:null,bounds:null,variableName:null});return t.variableData=l.variableData||null,t.metadata=l.metadata||null,t.bounds=l.bounds||null,t.variableName=l.variableName||null,Fr(e,t,n)},Fr=(e,l,n)=>{const t=I.ref(!1);I.watch(()=>l.variableName,async N=>{if(console.log("执行监听器-variableName",N),!N){t.value=!1;return}const U=await Ln(N);t.value=U!==null},{immediate:!0});const o=I.ref(!0),i=I.ref(80),r=I.ref(2),a=I.ref(null),u=I.ref({current:0,total:0,percent:0}),s=I.ref(!0),c=I.ref(1e6),{mapState:m,map:g,mapInitialized:p,mapError:d,isLoading:f,currentCoords:b,mouseEvents:x,destroyMap:h,setView:R,getCenter:y,getZoom:_,fitBounds:v,formatCoords:M}=$o(e);if(console.log(g,"useOpenLayersMap地图看看"),!m)throw new Error("地图未初始化");const{overlay:E,bounds:C,options:w,isLoading:T,createDataOverlay:S,updateOpacity:k,removeOverlay:D,getValueAtCoordinate:G}=Nr();console.log(E,"overlay看看");const X=I.computed(()=>!!E.value);console.log(X,"hasDataOverlay看看");const P=I.computed(()=>T.value);Vr(g,I.toRef(l,"variableData"),I.toRef(l,"metadata"),o,i,G);const q=Or(async(N,U,Hl)=>{const $=[112.1292,34.51661],Y=[113.1107,34.51661],W=[113.1107,33.53511],z=[112.1292,33.53511],fl=Math.min($[0],z[0],Y[0],W[0]),nl=Math.max($[0],z[0],Y[0],W[0]),yt=Math.min($[1],z[1],Y[1],W[1]),_t=Math.max($[1],z[1],Y[1],W[1]),ne=[fl,yt,nl,_t];s.value&&N.data.length>c.value?await Pl(N,U,ne,l.variableName??void 0):await S(N,U,g.value,ne,l.variableName??void 0)},300),rl=Dr(()=>{if(p.value){const N=_();N!==null&&(r.value=N)}},500);I.watch(()=>({lat:b.lat,lng:b.lng}),N=>{if(n.coordChange&&n.coordChange(N),l.variableData&&l.metadata&&p.value){const U=G(N,l.variableData,l.metadata);n.getCoordinate&&n.getCoordinate(N,U)}},{deep:!0,immediate:!0}),I.watch(()=>l.variableData,async N=>{if(console.log("newData",N,"props.metadata",l.metadata,"props.bounds",l.bounds),N&&l.metadata&&p.value)try{await q(N,l.metadata,l.bounds)}catch(U){console.error("Failed to create data overlay:",U)}},{deep:!0,immediate:!0});async function Pl(N,U,Hl,$){a.value&&a.value.cancel(),a.value=new Pr({chunkSize:1e5,delayBetweenChunks:10}),D(),u.value={current:0,total:0,percent:0};const Y=N.data,W=Array.from(Y);try{await a.value.render(W,async(z,fl,nl)=>{console.log(`正在渲染分块 ${fl+1},点数:${z.length}`)},z=>{u.value=z},()=>{S(N,U,g.value,Hl??void 0,$),a.value=null})}catch(z){console.error("Progressive rendering failed:",z),a.value=null}}return{options:w,bounds:C,currentZoom:r,mapCoords:b,hasDataOverlay:X,isRendering:P,renderingProgress:u,removeOverlay:D,updateOpacity:k,updateZoom:()=>{rl.call(null)}}},kr=e=>{const l=I.reactive({coordinates:{lat:null,lng:null},dataValue:null,dataStats:null,currentFile:null,isLoading:!1,error:null});l.coordinates=e.coordinates||{lat:null,lng:null},l.dataValue=e.dataValue||null,l.dataStats=e.dataStats||null,l.currentFile=e.currentFile||null,l.isLoading=e.isLoading||!1,l.error=e.error||null;const n=I.ref("ready"),t=I.computed(()=>l.error?"错误":l.isLoading?"加载中":l.currentFile&&!l.isLoading?"就绪":"等待中"),o=I.computed(()=>l.error?l.error:l.isLoading?"正在解析 netCDF 数据":l.currentFile?"数据已加载,可以使用":"请上传 netCDF 文件以开始使用"),i=I.computed(()=>l.dataValue===null||l.dataValue===void 0?"--":typeof l.dataValue=="number"?l.dataValue.toFixed(2):l.dataValue),r=I.computed(()=>{var s,c;const u=m=>m==null?"--":typeof m=="number"?m.toFixed(4):String(m);return{lat:u((s=l.coordinates)==null?void 0:s.lat),lng:u((c=l.coordinates)==null?void 0:c.lng)}});I.watch(()=>l.isLoading,u=>{u?n.value="loading":l.error?n.value="error":l.currentFile?n.value="ready":n.value="waiting"},{immediate:!0}),I.watch(()=>l.error,u=>{u&&(n.value="error")},{immediate:!0});function a(u){if(!u||u===0)return"0 Bytes";const s=1024,c=["Bytes","KB","MB","GB"],m=Math.floor(Math.log(u)/Math.log(s));return parseFloat((u/Math.pow(s,m)).toFixed(2))+" "+c[m]}return{formattedCoordinates:r,currentValue:i,statusText:t,statusDetail:o,currentFile:l.currentFile,dataStats:l.dataStats,systemStatus:n,formatFileSize:a}},jr="0.0.1";exports.detect2dVariables=Fn;exports.getColorData=jt;exports.getFileData=Lr;exports.getJsonItemForVariable=Ln;exports.getStatusInfo=kr;exports.useLoadFile=qt;exports.useMapInfo=Bo;exports.version=jr;
|
|
1
|
+
"use strict";var It=Object.create;var gn=Object.defineProperty;var vt=Object.getOwnPropertyDescriptor;var Et=Object.getOwnPropertyNames;var Ct=Object.getPrototypeOf,Mt=Object.prototype.hasOwnProperty;var At=(e,l,n)=>l in e?gn(e,l,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[l]=n;var Tt=(e,l,n,t)=>{if(l&&typeof l=="object"||typeof l=="function")for(let o of Et(l))!Mt.call(e,o)&&o!==n&&gn(e,o,{get:()=>l[o],enumerable:!(t=vt(l,o))||t.enumerable});return e};var wt=(e,l,n)=>(n=e!=null?It(Ct(e)):{},Tt(l||!e||!e.__esModule?gn(n,"default",{value:e,enumerable:!0}):n,e));var L=(e,l,n)=>At(e,typeof l!="symbol"?l+"":l,n);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const I=require("vue"),Dl=[[.267004,.004874,.329415],[.26851,.009605,.335427],[.269944,.014625,.341379],[.271305,.019942,.347269],[.272594,.025563,.353093],[.273809,.031497,.358853],[.274952,.037752,.364543],[.276022,.044167,.370164],[.277018,.050344,.375715],[.277941,.056324,.381191],[.278791,.062145,.386592],[.279566,.067836,.391917],[.280267,.073417,.397163],[.280894,.078907,.402329],[.281446,.08432,.407414],[.281924,.089666,.412415],[.282327,.094955,.417331],[.282656,.100196,.42216],[.28291,.105393,.426902],[.283091,.110553,.431554],[.283197,.11568,.436115],[.283229,.120777,.440584],[.283187,.125848,.44496],[.283072,.130895,.449241],[.282884,.13592,.453427],[.282623,.140926,.457517],[.28229,.145912,.46151],[.281887,.150881,.465405],[.281412,.155834,.469201],[.280868,.160771,.472899],[.280255,.165693,.476498],[.279574,.170599,.479997],[.278826,.17549,.483397],[.278012,.180367,.486697],[.277134,.185228,.489898],[.276194,.190074,.493001],[.275191,.194905,.496005],[.274128,.199721,.498911],[.273006,.20452,.501721],[.271828,.209303,.504434],[.270595,.214069,.507052],[.269308,.218818,.509577],[.267968,.223549,.512008],[.26658,.228262,.514349],[.265145,.232956,.516599],[.263663,.237631,.518762],[.262138,.242286,.520837],[.260571,.246922,.522828],[.258965,.251537,.524736],[.257322,.25613,.526563],[.255645,.260703,.528312],[.253935,.265254,.529983],[.252194,.269783,.531579],[.250425,.27429,.533103],[.248629,.278775,.534556],[.246811,.283237,.535941],[.244972,.287675,.53726],[.243113,.292092,.538516],[.241237,.296485,.539709],[.239346,.300855,.540844],[.237441,.305202,.541921],[.235526,.309527,.542944],[.233603,.313828,.543914],[.231674,.318106,.544834],[.229739,.322361,.545706],[.227802,.326594,.546532],[.225863,.330805,.547314],[.223925,.334994,.548053],[.221989,.339161,.548752],[.220057,.343307,.549413],[.21813,.347432,.550038],[.21621,.351535,.550627],[.214298,.355619,.551184],[.212395,.359683,.55171],[.210503,.363727,.552206],[.208623,.367752,.552675],[.206756,.371758,.553117],[.204903,.375746,.553533],[.203063,.379716,.553925],[.201239,.38367,.554294],[.19943,.387607,.554642],[.197636,.391528,.554969],[.19586,.395433,.555276],[.1941,.399323,.555565],[.192357,.403199,.555836],[.190631,.407061,.556089],[.188923,.41091,.556326],[.187231,.414746,.556547],[.185556,.41857,.556753],[.183898,.422383,.556944],[.182256,.426184,.55712],[.180629,.429975,.557282],[.179019,.433756,.55743],[.177423,.437527,.557565],[.175841,.44129,.557685],[.174274,.445044,.557792],[.172719,.448791,.557885],[.171176,.45253,.557965],[.169646,.456262,.55803],[.168126,.459988,.558082],[.166617,.463708,.558119],[.165117,.467423,.558141],[.163625,.471133,.558148],[.162142,.474838,.55814],[.160665,.47854,.558115],[.159194,.482237,.558073],[.157729,.485932,.558013],[.15627,.489624,.557936],[.154815,.493313,.55784],[.153364,.497,.557724],[.151918,.500685,.557587],[.150476,.504369,.55743],[.149039,.508051,.55725],[.147607,.511733,.557049],[.14618,.515413,.556823],[.144759,.519093,.556572],[.143343,.522773,.556295],[.141935,.526453,.555991],[.140536,.530132,.555659],[.139147,.533812,.555298],[.13777,.537492,.554906],[.136408,.541173,.554483],[.135066,.544853,.554029],[.133743,.548535,.553541],[.132444,.552216,.553018],[.131172,.555899,.552459],[.129933,.559582,.551864],[.128729,.563265,.551229],[.127568,.566949,.550556],[.126453,.570633,.549841],[.125394,.574318,.549086],[.124395,.578002,.548287],[.123463,.581687,.547445],[.122606,.585371,.546557],[.121831,.589055,.545623],[.121148,.592739,.544641],[.120565,.596422,.543611],[.120092,.600104,.54253],[.119738,.603785,.5414],[.119512,.607464,.540218],[.119423,.611141,.538982],[.119483,.614817,.537692],[.119699,.61849,.536347],[.120081,.622161,.534946],[.120638,.625828,.533488],[.12138,.629492,.531973],[.122312,.633153,.530398],[.123444,.636809,.528763],[.12478,.640461,.527068],[.126326,.644107,.525311],[.128087,.647749,.523491],[.130067,.651384,.521608],[.132268,.655014,.519661],[.134692,.658636,.517649],[.137339,.662252,.515571],[.14021,.665859,.513427],[.143303,.669459,.511215],[.146616,.67305,.508936],[.150148,.676631,.506589],[.153894,.680203,.504172],[.157851,.683765,.501686],[.162016,.687316,.499129],[.166383,.690856,.496502],[.170948,.694384,.493803],[.175707,.6979,.491033],[.180653,.701402,.488189],[.185783,.704891,.485273],[.19109,.708366,.482284],[.196571,.711827,.479221],[.202219,.715272,.476084],[.20803,.718701,.472873],[.214,.722114,.469588],[.220124,.725509,.466226],[.226397,.728888,.462789],[.232815,.732247,.459277],[.239374,.735588,.455688],[.24607,.73891,.452024],[.252899,.742211,.448284],[.259857,.745492,.444467],[.266941,.748751,.440573],[.274149,.751988,.436601],[.281477,.755203,.432552],[.288921,.758394,.428426],[.296479,.761561,.424223],[.304148,.764704,.419943],[.311925,.767822,.415586],[.319809,.770914,.411152],[.327796,.77398,.40664],[.335885,.777018,.402049],[.344074,.780029,.397381],[.35236,.783011,.392636],[.360741,.785964,.387814],[.369214,.788888,.382914],[.377779,.791781,.377939],[.386433,.794644,.372886],[.395174,.797475,.367757],[.404001,.800275,.362552],[.412913,.803041,.357269],[.421908,.805774,.35191],[.430983,.808473,.346476],[.440137,.811138,.340967],[.449368,.813768,.335384],[.458674,.816363,.329727],[.468053,.818921,.323998],[.477504,.821444,.318195],[.487026,.823929,.312321],[.496615,.826376,.306377],[.506271,.828786,.300362],[.515992,.831158,.294279],[.525776,.833491,.288127],[.535621,.835785,.281908],[.545524,.838039,.275626],[.555484,.840254,.269281],[.565498,.84243,.262877],[.575563,.844566,.256415],[.585678,.846661,.249897],[.595839,.848717,.243329],[.606045,.850733,.236712],[.616293,.852709,.230052],[.626579,.854645,.223353],[.636902,.856542,.21662],[.647257,.8584,.209861],[.657642,.860219,.203082],[.668054,.861999,.196293],[.678489,.863742,.189503],[.688944,.865448,.182725],[.699415,.867117,.175971],[.709898,.868751,.169257],[.720391,.87035,.162603],[.730889,.871916,.156029],[.741388,.873449,.149561],[.751884,.874951,.143228],[.762373,.876424,.137064],[.772852,.877868,.131109],[.783315,.879285,.125405],[.79376,.880678,.120005],[.804182,.882046,.114965],[.814576,.883393,.110347],[.82494,.88472,.106217],[.83527,.886029,.102646],[.845561,.887322,.099702],[.85581,.888601,.097452],[.866013,.889868,.095953],[.876168,.891125,.09525],[.886271,.892374,.095374],[.89632,.893616,.096335],[.906311,.894855,.098125],[.916242,.896091,.100717],[.926106,.89733,.104071],[.935904,.89857,.108131],[.945636,.899815,.112838],[.9553,.901065,.118128],[.964894,.902323,.123941],[.974417,.90359,.130215],[.983868,.904867,.136897],[.993248,.906157,.143936]];function ke(e){const l=Math.min(Math.floor(e*(Dl.length-1)),Dl.length-2),n=e*(Dl.length-1)-l,t=Dl[l],o=Dl[l+1];return[Math.round((t[0]+n*(o[0]-t[0]))*255),Math.round((t[1]+n*(o[1]-t[1]))*255),Math.round((t[2]+n*(o[2]-t[2]))*255),255]}function St(e){const l=Math.round(255*(.0588+e*1)),n=Math.round(255*(.0196+e*(.0196-.0196))),t=Math.round(255*(.8588+e*(.0196-.8588)));return[l,n,t,255]}function Nt(e){const l=Math.round(255*(0+e*1)),n=Math.round(255*(0+e*1)),t=Math.round(255*(0+e*1));return[l,n,t,255]}function Vt(e){const l=Math.round(255*(0+e*1)),n=Math.round(255*(0+e*0)),t=Math.round(255*(0+e*1));return[l,n,t,255]}function Pt(e){let l=1,n=1,t=1;return e<.125?(l=0,n=0,t=.5+4*e):e<.375?(l=0,n=4*(e-.125),t=1):e<.625?(l=4*(e-.375),n=1,t=1-4*(e-.375)):e<.875?(l=1,n=1-4*(e-.625),t=0):(l=1-4*(e-.875),n=0,t=0),[Math.round(l*255),Math.round(n*255),Math.round(t*255),255]}function Dt(e){let l=1,n=1,t=1;return e<.333?(l=3*e,n=0,t=0):e<.667?(l=1,n=3*(e-.333),t=0):(l=1,n=1,t=3*(e-.667)),[Math.round(l*255),Math.round(n*255),Math.round(t*255),255]}function Ot(e){return[Math.round(e*255),Math.round((1-e)*255),255,255]}function Lt(e){const l=Math.round(e*255);return[l,l,l,255]}function Ft(){return{viridis:ke,plasma:St,inferno:Nt,magma:Vt,jet:Pt,hot:Dt,cool:Ot,grayscale:Lt}}function An(e){return Ft()[e]??ke}function Tn(e,l){const n=document.createElement("canvas");return n.width=e,n.height=l,n}function ee(e,l,n,t){const o=e.getContext("2d"),i=new ImageData(new Uint8ClampedArray(l),n,t);o.putImageData(i,0,0)}function kt(e,l,n,t=!0){const o=Tn(e,l),i=o.getContext("2d"),r=i.createImageData(e,l);if(t)for(let a=0;a<l;a++){const u=1-a/(l-1),[s,c,m,g]=n(u);for(let p=0;p<e;p++){const d=(a*e+p)*4;r.data[d]=s,r.data[d+1]=c,r.data[d+2]=m,r.data[d+3]=g}}else for(let a=0;a<e;a++){const u=a/(e-1),[s,c,m,g]=n(u);for(let p=0;p<l;p++){const d=(p*e+a)*4;r.data[d]=s,r.data[d+1]=c,r.data[d+2]=m,r.data[d+3]=g}}return i.putImageData(r,0,0),i.strokeStyle="#333",i.lineWidth=1,i.strokeRect(0,0,e,l),o}const jt={id:"68541156820de978f2963673",name:"气象专用色标",version:"zefanc-20250619",active:!1,hashCode:"2b156d9c2e3c2587082ea2025d7d2054",createBy:"?????",createdDate:1750339926306,lastModifiedDate:1750339926306,lastModifiedBy:"?????",delFlag:!1,item:[{id:"670950ca-6e32-4df1-851f-145509e54be9",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"WINSAVG2MIN",unit:"m/s",maxValue:30,minValue:0,scale:1,gradient:null,remark:"2分钟平均风速",productType:"STATION",items:[{min:0,max:null,point:null,color:"rgb(102, 92, 169)",label:""},{min:3,max:null,point:null,color:"rgb(42, 116, 188)",label:""},{min:5,max:null,point:null,color:"rgb(9, 175, 229)",label:""},{min:10,max:null,point:null,color:"rgb(13, 179, 116)",label:""},{min:15,max:null,point:null,color:"rgb(237, 213, 39)",label:""},{min:20,max:null,point:null,color:"rgb(196, 84, 178)",label:""},{min:30,max:null,point:null,color:"rgb(54, 137, 215)",label:""}]},{id:"1710a752-5c74-444e-bd64-e62935782d67",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"WINDAYSINSTMAX",unit:"m/s",maxValue:30,minValue:0,scale:1,gradient:null,remark:"日极大风速",productType:"STATION",items:[{min:0,max:null,point:null,color:"rgb(102, 92, 169)",label:""},{min:3,max:null,point:null,color:"rgb(42, 116, 188)",label:""},{min:5,max:null,point:null,color:"rgb(9, 175, 229)",label:""},{min:10,max:null,point:null,color:"rgb(13, 179, 116)",label:""},{min:15,max:null,point:null,color:"rgb(237, 213, 39)",label:""},{min:20,max:null,point:null,color:"rgb(196, 84, 178)",label:""},{min:30,max:null,point:null,color:"rgb(54, 137, 215)",label:""}]},{id:"cd51718b-1567-44ab-8250-cb57418e57cd",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"WINSINST",unit:"m/s",maxValue:30,minValue:0,scale:1,gradient:null,remark:"瞬时风速",productType:"STATION",items:[{min:0,max:null,point:null,color:"rgb(102, 92, 169)",label:""},{min:3,max:null,point:null,color:"rgb(42, 116, 188)",label:""},{min:5,max:null,point:null,color:"rgb(9, 175, 229)",label:""},{min:10,max:null,point:null,color:"rgb(13, 179, 116)",label:""},{min:15,max:null,point:null,color:"rgb(237, 213, 39)",label:""},{min:20,max:null,point:null,color:"rgb(196, 84, 178)",label:""},{min:30,max:null,point:null,color:"rgb(54, 137, 215)",label:""}]},{id:"8a2b8fd3-2e4a-4133-be60-0fc82e89e086",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"WINSINSTHOURMAX",unit:"m/s",maxValue:30,minValue:0,scale:1,gradient:null,remark:"小时内极大风速",productType:"STATION",items:[{min:0,max:null,point:null,color:"rgb(102, 92, 169)",label:""},{min:3,max:null,point:null,color:"rgb(42, 116, 188)",label:""},{min:5,max:null,point:null,color:"rgb(9, 175, 229)",label:""},{min:10,max:null,point:null,color:"rgb(13, 179, 116)",label:""},{min:15,max:null,point:null,color:"rgb(237, 213, 39)",label:""},{min:20,max:null,point:null,color:"rgb(196, 84, 178)",label:""},{min:30,max:null,point:null,color:"rgb(54, 137, 215)",label:""}]},{id:"81447b91-c0b7-401d-9fe2-29b39341fd7c",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"TEM",unit:"℃",maxValue:40,minValue:-30,scale:1,gradient:!0,remark:"气温",productType:"STATION",items:[{min:-30,max:null,point:null,color:"rgb(7, 30, 120)",label:""},{min:-28,max:null,point:null,color:"rgb(17, 49, 139)",label:""},{min:-26,max:null,point:null,color:"rgb(27, 68, 159)",label:""},{min:-24,max:null,point:null,color:"rgb(38, 87, 179)",label:""},{min:-22,max:null,point:null,color:"rgb(48, 106, 199)",label:""},{min:-20,max:null,point:null,color:"rgb(59, 126, 219)",label:""},{min:-18,max:null,point:null,color:"rgb(78, 138, 221)",label:""},{min:-16,max:null,point:null,color:"rgb(97, 150, 224)",label:""},{min:-14,max:null,point:null,color:"rgb(116, 163, 226)",label:""},{min:-12,max:null,point:null,color:"rgb(135, 179, 225)",label:""},{min:-10,max:null,point:null,color:"rgb(155, 188, 232)",label:""},{min:-8,max:null,point:null,color:"rgb(154, 196, 220)",label:""},{min:-6,max:null,point:null,color:"rgb(153, 205, 208)",label:""},{min:-4,max:null,point:null,color:"rgb(152, 214, 196)",label:""},{min:-2,max:null,point:null,color:"rgb(151, 232, 173)",label:""},{min:0,max:null,point:null,color:"rgb(255, 222, 126)",label:""},{min:2,max:null,point:null,color:"rgb(234, 219, 112)",label:""},{min:4,max:null,point:null,color:"rgb(244, 217, 99)",label:""},{min:6,max:null,point:null,color:"rgb(250, 204, 79)",label:""},{min:8,max:null,point:null,color:"rgb(247, 180, 45)",label:""},{min:10,max:null,point:null,color:"rgb(242, 155, 0)",label:""},{min:12,max:null,point:null,color:"rgb(241, 147, 3)",label:""},{min:14,max:null,point:null,color:"rgb(240, 132, 10)",label:""},{min:16,max:null,point:null,color:"rgb(239, 117, 17)",label:""},{min:18,max:null,point:null,color:"rgb(238, 102, 24)",label:""},{min:20,max:null,point:null,color:"rgb(238, 88, 31)",label:""},{min:22,max:null,point:null,color:"rgb(231, 75, 26)",label:""},{min:24,max:null,point:null,color:"rgb(224, 63, 22)",label:""},{min:26,max:null,point:null,color:"rgb(217, 51, 18)",label:""},{min:28,max:null,point:null,color:"rgb(208, 36, 14)",label:""},{min:30,max:null,point:null,color:"rgb(194, 0, 3)",label:""},{min:32,max:null,point:null,color:"rgb(181, 1, 9)",label:""},{min:34,max:null,point:null,color:"rgb(169, 2, 16)",label:""},{min:36,max:null,point:null,color:"rgb(138, 5, 25)",label:""},{min:38,max:null,point:null,color:"rgb(111, 0, 21)",label:""},{min:40,max:null,point:null,color:"rgb(80, 0, 15)",label:""}]},{id:"9f49b3a4-a225-48c9-8cbb-05bede575a29",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"TEMMAX",unit:"℃",maxValue:40,minValue:-30,scale:1,gradient:!0,remark:"日最高气温",productType:"STATION",items:[{min:-30,max:null,point:null,color:"rgb(7, 30, 120)",label:""},{min:-28,max:null,point:null,color:"rgb(17, 49, 139)",label:""},{min:-26,max:null,point:null,color:"rgb(27, 68, 159)",label:""},{min:-24,max:null,point:null,color:"rgb(38, 87, 179)",label:""},{min:-22,max:null,point:null,color:"rgb(48, 106, 199)",label:""},{min:-20,max:null,point:null,color:"rgb(59, 126, 219)",label:""},{min:-18,max:null,point:null,color:"rgb(78, 138, 221)",label:""},{min:-16,max:null,point:null,color:"rgb(97, 150, 224)",label:""},{min:-14,max:null,point:null,color:"rgb(116, 163, 226)",label:""},{min:-12,max:null,point:null,color:"rgb(135, 179, 225)",label:""},{min:-10,max:null,point:null,color:"rgb(155, 188, 232)",label:""},{min:-8,max:null,point:null,color:"rgb(154, 196, 220)",label:""},{min:-6,max:null,point:null,color:"rgb(153, 205, 208)",label:""},{min:-4,max:null,point:null,color:"rgb(152, 214, 196)",label:""},{min:-2,max:null,point:null,color:"rgb(151, 232, 173)",label:""},{min:0,max:null,point:null,color:"rgb(255, 222, 126)",label:""},{min:2,max:null,point:null,color:"rgb(234, 219, 112)",label:""},{min:4,max:null,point:null,color:"rgb(244, 217, 99)",label:""},{min:6,max:null,point:null,color:"rgb(250, 204, 79)",label:""},{min:8,max:null,point:null,color:"rgb(247, 180, 45)",label:""},{min:10,max:null,point:null,color:"rgb(242, 155, 0)",label:""},{min:12,max:null,point:null,color:"rgb(241, 147, 3)",label:""},{min:14,max:null,point:null,color:"rgb(240, 132, 10)",label:""},{min:16,max:null,point:null,color:"rgb(239, 117, 17)",label:""},{min:18,max:null,point:null,color:"rgb(238, 102, 24)",label:""},{min:20,max:null,point:null,color:"rgb(238, 88, 31)",label:""},{min:22,max:null,point:null,color:"rgb(231, 75, 26)",label:""},{min:24,max:null,point:null,color:"rgb(224, 63, 22)",label:""},{min:26,max:null,point:null,color:"rgb(217, 51, 18)",label:""},{min:28,max:null,point:null,color:"rgb(208, 36, 14)",label:""},{min:30,max:null,point:null,color:"rgb(194, 0, 3)",label:""},{min:32,max:null,point:null,color:"rgb(181, 1, 9)",label:""},{min:34,max:null,point:null,color:"rgb(169, 2, 16)",label:""},{min:36,max:null,point:null,color:"rgb(138, 5, 25)",label:""},{min:38,max:null,point:null,color:"rgb(111, 0, 21)",label:""},{min:40,max:null,point:null,color:"rgb(80, 0, 15)",label:""}]},{id:"33f40cbc-d49c-44d8-8656-c3ec8d0d527a",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"TEMMIN",unit:"℃",maxValue:40,minValue:-30,scale:1,gradient:!0,remark:"日最低气温",productType:"STATION",items:[{min:-30,max:null,point:null,color:"rgb(7, 30, 120)",label:""},{min:-28,max:null,point:null,color:"rgb(17, 49, 139)",label:""},{min:-26,max:null,point:null,color:"rgb(27, 68, 159)",label:""},{min:-24,max:null,point:null,color:"rgb(38, 87, 179)",label:""},{min:-22,max:null,point:null,color:"rgb(48, 106, 199)",label:""},{min:-20,max:null,point:null,color:"rgb(59, 126, 219)",label:""},{min:-18,max:null,point:null,color:"rgb(78, 138, 221)",label:""},{min:-16,max:null,point:null,color:"rgb(97, 150, 224)",label:""},{min:-14,max:null,point:null,color:"rgb(116, 163, 226)",label:""},{min:-12,max:null,point:null,color:"rgb(135, 179, 225)",label:""},{min:-10,max:null,point:null,color:"rgb(155, 188, 232)",label:""},{min:-8,max:null,point:null,color:"rgb(154, 196, 220)",label:""},{min:-6,max:null,point:null,color:"rgb(153, 205, 208)",label:""},{min:-4,max:null,point:null,color:"rgb(152, 214, 196)",label:""},{min:-2,max:null,point:null,color:"rgb(151, 232, 173)",label:""},{min:0,max:null,point:null,color:"rgb(255, 222, 126)",label:""},{min:2,max:null,point:null,color:"rgb(234, 219, 112)",label:""},{min:4,max:null,point:null,color:"rgb(244, 217, 99)",label:""},{min:6,max:null,point:null,color:"rgb(250, 204, 79)",label:""},{min:8,max:null,point:null,color:"rgb(247, 180, 45)",label:""},{min:10,max:null,point:null,color:"rgb(242, 155, 0)",label:""},{min:12,max:null,point:null,color:"rgb(241, 147, 3)",label:""},{min:14,max:null,point:null,color:"rgb(240, 132, 10)",label:""},{min:16,max:null,point:null,color:"rgb(239, 117, 17)",label:""},{min:18,max:null,point:null,color:"rgb(238, 102, 24)",label:""},{min:20,max:null,point:null,color:"rgb(238, 88, 31)",label:""},{min:22,max:null,point:null,color:"rgb(231, 75, 26)",label:""},{min:24,max:null,point:null,color:"rgb(224, 63, 22)",label:""},{min:26,max:null,point:null,color:"rgb(217, 51, 18)",label:""},{min:28,max:null,point:null,color:"rgb(208, 36, 14)",label:""},{min:30,max:null,point:null,color:"rgb(194, 0, 3)",label:""},{min:32,max:null,point:null,color:"rgb(181, 1, 9)",label:""},{min:34,max:null,point:null,color:"rgb(169, 2, 16)",label:""},{min:36,max:null,point:null,color:"rgb(138, 5, 25)",label:""},{min:38,max:null,point:null,color:"rgb(111, 0, 21)",label:""},{min:40,max:null,point:null,color:"rgb(80, 0, 15)",label:""}]},{id:"5542d502-6d93-4cd7-8c5d-c30b506a1f96",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"AP6M",unit:"mm",maxValue:10,minValue:1,scale:1,gradient:null,remark:"6分钟雨量",productType:"NWP",items:[{min:0,max:null,point:null,color:"rgb(205, 244, 206)",label:""},{min:.02,max:null,point:null,color:"rgb(170, 248, 164)",label:""},{min:.3,max:null,point:null,color:"rgb(69, 245, 69)",label:""},{min:1.2,max:null,point:null,color:"rgb(111, 181, 251)",label:""},{min:2.5,max:null,point:null,color:"rgb(71, 56, 250)",label:""},{min:4.5,max:null,point:null,color:"rgb(198, 61, 247)",label:""},{min:7,max:null,point:null,color:"rgb(167, 56, 133)",label:""}]},{id:"b47cd1b6-8560-47fe-97fd-966fabd6ef9a",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"CAPE",unit:"J/kg",maxValue:4e3,minValue:0,scale:null,gradient:null,remark:"数值模式CAPE指标",productType:"NWP",items:[{min:0,max:null,point:null,color:"rgb(255, 255, 204)",label:""},{min:400,max:null,point:null,color:"rgb(255, 237, 160)",label:""},{min:800,max:null,point:null,color:"rgb(255, 217, 118)",label:""},{min:1200,max:null,point:null,color:"rgb(254, 178, 76)",label:""},{min:1600,max:null,point:null,color:"rgb(253, 141, 60)",label:""},{min:2e3,max:null,point:null,color:"rgb(252, 75, 42)",label:""},{min:2400,max:null,point:null,color:"rgb(227, 26, 28)",label:""},{min:2800,max:null,point:null,color:"rgb(189, 0, 38)",label:""},{min:3200,max:null,point:null,color:"rgb(128, 0, 38)",label:""},{min:3600,max:null,point:null,color:"rgb(100, 0, 38)",label:""}]},{id:"f2eef036-a0e1-4f43-9af8-3ed771c4c57f",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"CIN",unit:"J/kg",maxValue:1e3,minValue:0,scale:null,gradient:null,remark:"数值模式CAPE指标",productType:"NWP",items:[{min:0,max:null,point:null,color:"rgb(255,255,255)",label:""},{min:100,max:null,point:null,color:"rgb(230, 230, 230)",label:""},{min:200,max:null,point:null,color:"rgb(204, 204, 204)",label:""},{min:300,max:null,point:null,color:"rgb(179, 179, 179)",label:""},{min:400,max:null,point:null,color:"rgb(153, 153, 153)",label:""},{min:500,max:null,point:null,color:"rgb(128, 128, 128)",label:""},{min:600,max:null,point:null,color:"rgb(102, 102, 102)",label:""},{min:700,max:null,point:null,color:"rgb(77, 77, 77)",label:""},{min:800,max:null,point:null,color:"rgb(51, 51, 51)",label:""},{min:900,max:null,point:null,color:"rgb(26, 26, 26)",label:""},{min:1e3,max:null,point:null,color:"rgb(0, 0, 0)",label:""}]},{id:"ARD",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"ARD",unit:"/s*1E(-4)",maxValue:60,minValue:-100,scale:1e-4,gradient:null,remark:"方位涡度",productType:"RADAR",items:[{min:-100,max:-60,point:null,color:"rgb(99,0,255)",label:null},{min:-60,max:-50,point:null,color:"rgb(0,0,255)",label:null},{min:-50,max:-30,point:null,color:"rgb(0,154,255)",label:null},{min:-30,max:-20,point:null,color:"rgb(99,255,255)",label:null},{min:-20,max:-10,point:null,color:"rgb(181,255,0)",label:null},{min:-10,max:-5,point:null,color:"rgb(0,255,0)",label:null},{min:-5,max:-1,point:null,color:"rgb(0,182,0)",label:null},{min:-1,max:-.2,point:null,color:"rgb(0,117,0)",label:null},{min:-.2,max:.2,point:null,color:"rgb(255,255,255)",label:null},{min:.2,max:1,point:null,color:"rgb(255,101,0)",label:null},{min:1,max:5,point:null,color:"rgb(255,182,0)",label:null},{min:5,max:10,point:null,color:"rgb(255,255,0)",label:null},{min:10,max:20,point:null,color:"rgb(255,154,255)",label:null},{min:20,max:30,point:null,color:"rgb(255,0,255)",label:null},{min:30,max:50,point:null,color:"rgb(255,121,123)",label:null},{min:50,max:60,point:null,color:"rgb(255,0,0)",label:null},{min:60,max:null,point:null,color:"rgb(132,0,0)",label:null}]},{id:"BOTS",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"BOTS",unit:"km",maxValue:21,minValue:0,scale:null,gradient:null,remark:"回波底高",productType:"RADAR",items:[{min:0,max:2,point:null,color:"rgb(190,190,190)",label:null},{min:2,max:3,point:null,color:"rgb(118,118,118)",label:null},{min:3,max:5,point:null,color:"rgb(0,224,255)",label:null},{min:5,max:6,point:null,color:"rgb(0,176,255)",label:null},{min:6,max:8,point:null,color:"rgb(0,144,204)",label:null},{min:8,max:9,point:null,color:"rgb(50,0,150)",label:null},{min:9,max:11,point:null,color:"rgb(0,251,144)",label:null},{min:11,max:12,point:null,color:"rgb(0,187,0)",label:null},{min:12,max:14,point:null,color:"rgb(0,239,0)",label:null},{min:14,max:15,point:null,color:"rgb(254,191,0)",label:null},{min:15,max:17,point:null,color:"rgb(255,255,0)",label:null},{min:17,max:18,point:null,color:"rgb(174,0,0)",label:null},{min:18,max:20,point:null,color:"rgb(255,0,0)",label:null},{min:20,max:21,point:null,color:"rgb(255,255,255)",label:null},{min:21,max:null,point:null,color:"rgb(231,0,255)",label:null}]},{id:"CKDP",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"CKDP",unit:"deg/km",maxValue:20,minValue:-.8,scale:null,gradient:null,remark:"组合差分相移率",productType:"RADAR",items:[{min:-.8,max:-.4,point:null,color:"rgb(0, 255, 255)",label:null},{min:-.4,max:-.2,point:null,color:"rgb(0, 239, 239)",label:null},{min:-.2,max:-.1,point:null,color:"rgb(0, 170, 173)",label:null},{min:-.1,max:.1,point:null,color:"rgb(181, 182, 181)",label:null},{min:.1,max:.15,point:null,color:"rgb(181, 182, 181)",label:null},{min:.15,max:.22,point:null,color:"rgb(0, 195, 33)",label:null},{min:.22,max:.33,point:null,color:"rgb(0, 235, 8)",label:null},{min:.33,max:.5,point:null,color:"rgb(33, 255, 33)",label:null},{min:.5,max:.75,point:null,color:"rgb(255,253,73)",label:null},{min:.75,max:1.1,point:null,color:"rgb(255,227,60)",label:null},{min:1.1,max:1.7,point:null,color:"rgb(254,185,51)",label:null},{min:1.7,max:2.4,point:null,color:"rgb(254,149,44)",label:null},{min:2.4,max:3.1,point:null,color:"rgb(253,92,33)",label:null},{min:3.1,max:7,point:null,color:"rgb(240,15,25)",label:null},{min:7,max:20,point:null,color:"rgb(184,0,61)",label:null},{min:20,max:null,point:null,color:"rgb(253,40,250)",label:null}]},{id:"CRM",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"CRM",unit:"dBZ",maxValue:75,minValue:5,scale:null,gradient:null,remark:"混合反射率因子",productType:"RADAR",items:[{min:5,max:10,point:null,color:"rgb(35,236,235)",label:null},{min:10,max:15,point:null,color:"rgb(19,160,220)",label:null},{min:15,max:20,point:null,color:"rgb(0,41,240)",label:null},{min:20,max:25,point:null,color:"rgb(43,252,62)",label:null},{min:25,max:30,point:null,color:"rgb(34,197,49)",label:null},{min:30,max:35,point:null,color:"rgb(24,142,35)",label:null},{min:35,max:40,point:null,color:"rgb(255,252,66)",label:null},{min:40,max:45,point:null,color:"rgb(229,189,51)",label:null},{min:45,max:50,point:null,color:"rgb(253,141,42)",label:null},{min:50,max:55,point:null,color:"rgb(252,0,25)",label:null},{min:55,max:60,point:null,color:"rgb(163,0,17)",label:null},{min:60,max:65,point:null,color:"rgb(99,0,10)",label:null},{min:65,max:70,point:null,color:"rgb(252,40,249)",label:null},{min:70,max:75,point:null,color:"rgb(149,89,195)",label:null},{min:75,max:null,point:null,color:"rgb(255,255,255)",label:null}]},{id:"CRU",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"CRU",unit:"dBZ",maxValue:75,minValue:5,scale:null,gradient:null,remark:"N层组合反射率",productType:"RADAR",items:[{min:5,max:10,point:null,color:"rgb(35,236,235)",label:null},{min:10,max:15,point:null,color:"rgb(19,160,220)",label:null},{min:15,max:20,point:null,color:"rgb(0,41,240)",label:null},{min:20,max:25,point:null,color:"rgb(43,252,62)",label:null},{min:25,max:30,point:null,color:"rgb(34,197,49)",label:null},{min:30,max:35,point:null,color:"rgb(24,142,35)",label:null},{min:35,max:40,point:null,color:"rgb(255,252,66)",label:null},{min:40,max:45,point:null,color:"rgb(229,189,51)",label:null},{min:45,max:50,point:null,color:"rgb(253,141,42)",label:null},{min:50,max:55,point:null,color:"rgb(252,0,25)",label:null},{min:55,max:60,point:null,color:"rgb(163,0,17)",label:null},{min:60,max:65,point:null,color:"rgb(99,0,10)",label:null},{min:65,max:70,point:null,color:"rgb(252,40,249)",label:null},{min:70,max:75,point:null,color:"rgb(149,89,195)",label:null},{min:75,max:null,point:null,color:"rgb(255,255,255)",label:null}]},{id:"CS",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"CS",unit:"/s*1E(-4)",maxValue:300,minValue:0,scale:1e-4,gradient:null,remark:"综合切变",productType:"RADAR",items:[{min:.01,max:5,point:null,color:"rgb(82,81,82)",label:null},{min:5,max:10,point:null,color:"rgb(115,117,115)",label:null},{min:10,max:20,point:null,color:"rgb(173,170,173)",label:null},{min:20,max:30,point:null,color:"rgb(49,0,148)",label:null},{min:30,max:40,point:null,color:"rgb(0,130,255)",label:null},{min:40,max:50,point:null,color:"rgb(0,255,255)",label:null},{min:50,max:60,point:null,color:"rgb(0,142,0)",label:null},{min:60,max:70,point:null,color:"rgb(0,186,0)",label:null},{min:70,max:80,point:null,color:"rgb(0,255,0)",label:null},{min:80,max:90,point:null,color:"rgb(206,101,0)",label:null},{min:90,max:100,point:null,color:"rgb(255,170,0)",label:null},{min:100,max:150,point:null,color:"rgb(255,255,0)",label:null},{min:150,max:200,point:null,color:"rgb(173,0,0)",label:null},{min:200,max:250,point:null,color:"rgb(255,0,0)",label:null},{min:250,max:300,point:null,color:"rgb(255,125,123)",label:null},{min:300,max:null,point:null,color:"rgb(148,0,148)",label:null}]},{id:"c3811d63-ac60-4931-91e5-d13665e1d91c",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"DBZ",unit:"dBZ",maxValue:75,minValue:5,scale:null,gradient:null,remark:"数值模式反射率",productType:"NWP",items:[{min:5,max:10,point:null,color:"rgb(35,236,235)",label:null},{min:10,max:15,point:null,color:"rgb(19,160,220)",label:null},{min:15,max:20,point:null,color:"rgb(0,41,240)",label:null},{min:20,max:25,point:null,color:"rgb(43,252,62)",label:null},{min:25,max:30,point:null,color:"rgb(34,197,49)",label:null},{min:30,max:35,point:null,color:"rgb(24,142,35)",label:null},{min:35,max:40,point:null,color:"rgb(255,252,66)",label:null},{min:40,max:45,point:null,color:"rgb(229,189,51)",label:null},{min:45,max:50,point:null,color:"rgb(253,141,42)",label:null},{min:50,max:55,point:null,color:"rgb(252,0,25)",label:null},{min:55,max:60,point:null,color:"rgb(163,0,17)",label:null},{min:60,max:65,point:null,color:"rgb(99,0,10)",label:null},{min:65,max:70,point:null,color:"rgb(252,40,249)",label:null},{min:70,max:75,point:null,color:"rgb(149,89,195)",label:null},{min:75,max:null,point:null,color:"rgb(255,255,255)",label:null}]},{id:"490a7adf-0a98-4df7-80cf-ee0d51130abc",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"DHP",unit:"mm",maxValue:203.2,minValue:0,scale:null,gradient:null,remark:"2小时降雨",productType:"FORECAST",items:[{min:.1,max:2.54,point:null,color:"rgb(170,170,170)",label:null},{min:2.54,max:6.35,point:null,color:"rgb(118,118,118)",label:null},{min:6.35,max:12.7,point:null,color:"rgb(0,255,255)",label:null},{min:12.7,max:19.05,point:null,color:"rgb(0,175,175)",label:null},{min:19.05,max:25.4,point:null,color:"rgb(0,255,0)",label:null},{min:25.4,max:31.75,point:null,color:"rgb(0,143,0)",label:null},{min:31.75,max:38.1,point:null,color:"rgb(255,0,255)",label:null},{min:38.1,max:44.45,point:null,color:"rgb(175,50,125)",label:null},{min:44.45,max:50.8,point:null,color:"rgb(0,0,255)",label:null},{min:50.8,max:63.5,point:null,color:"rgb(50,0,150)",label:null},{min:63.5,max:76.2,point:null,color:"rgb(255,255,0)",label:null},{min:76.2,max:101.6,point:null,color:"rgb(255,170,0)",label:null},{min:101.6,max:152.4,point:null,color:"rgb(255,0,0)",label:null},{min:152.4,max:203.2,point:null,color:"rgb(174,0,0)",label:null},{min:203.2,max:null,point:null,color:"rgb(255,255,255)",label:null}]},{id:"EMAX",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"EMAX",unit:"km",maxValue:21,minValue:0,scale:null,gradient:null,remark:"最强回波高度",productType:"RADAR",items:[{min:.1,max:2,point:null,color:"rgb(190,190,190)",label:null},{min:2,max:3,point:null,color:"rgb(118,118,118)",label:null},{min:3,max:5,point:null,color:"rgb(0,224,255)",label:null},{min:5,max:6,point:null,color:"rgb(0,176,255)",label:null},{min:6,max:8,point:null,color:"rgb(0,144,204)",label:null},{min:8,max:9,point:null,color:"rgb(50,0,150)",label:null},{min:9,max:11,point:null,color:"rgb(0,254,144)",label:null},{min:11,max:12,point:null,color:"rgb(0,187,0)",label:null},{min:12,max:14,point:null,color:"rgb(0,239,0)",label:null},{min:14,max:15,point:null,color:"rgb(254,191,0)",label:null},{min:15,max:17,point:null,color:"rgb(255,255,60)",label:null},{min:17,max:18,point:null,color:"rgb(174,0,0)",label:null},{min:18,max:20,point:null,color:"rgb(255,0,0)",label:null},{min:20,max:21,point:null,color:"rgb(255,255,255)",label:null},{min:21,max:null,point:null,color:"rgb(231,0,255)",label:null}]},{id:"HYDROS",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"HYDROS",unit:"",maxValue:11,minValue:0,scale:null,gradient:null,remark:"水凝物分类",productType:"RADAR",items:[{min:-999,max:1,point:null,color:"rgb(0,255,46)",label:"小雨"},{min:1,max:2,point:null,color:"rgb(0,204,100)",label:"中雨"},{min:2,max:3,point:null,color:"rgb(2,100,26)",label:"大雨"},{min:3,max:4,point:null,color:"rgb(101,129,28)",label:"大雨滴"},{min:4,max:5,point:null,color:"rgb(253,1,0)",label:"冰雹"},{min:5,max:6,point:null,color:"rgb(255,202,129)",label:"雨加雹"},{min:6,max:7,point:null,color:"rgb(255,0,250)",label:"霰/雹"},{min:7,max:8,point:null,color:"rgb(0,0,251)",label:"干雪"},{min:8,max:9,point:null,color:"rgb(25,25,134)",label:"湿雪"},{min:9,max:10,point:null,color:"rgb(141,57,242)",label:"H-冰晶"},{min:10,max:11,point:null,color:"rgb(117,113,233)",label:"V-冰晶"},{min:11,max:null,point:null,color:"rgb(204,204,192)",label:"地物杂波"}]},{id:"KDP",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"KDP",unit:"deg/km",maxValue:20,minValue:-.8,scale:null,gradient:null,remark:"差分传播相位率",productType:"RADAR",items:[{min:-.8,max:-.4,point:null,color:"rgb(0, 255, 255)",label:null},{min:-.4,max:-.2,point:null,color:"rgb(0, 239, 239)",label:null},{min:-.2,max:-.1,point:null,color:"rgb(0, 170, 173)",label:null},{min:-.1,max:.1,point:null,color:"rgb(181, 182, 181)",label:null},{min:.1,max:.15,point:null,color:"rgb(181, 182, 181)",label:null},{min:.15,max:.22,point:null,color:"rgb(0, 195, 33)",label:null},{min:.22,max:.33,point:null,color:"rgb(0, 235, 8)",label:null},{min:.33,max:.5,point:null,color:"rgb(33, 255, 33)",label:null},{min:.5,max:.75,point:null,color:"rgb(255,253,73)",label:null},{min:.75,max:1.1,point:null,color:"rgb(255,227,60)",label:null},{min:1.1,max:1.7,point:null,color:"rgb(254,185,51)",label:null},{min:1.7,max:2.4,point:null,color:"rgb(254,149,44)",label:null},{min:2.4,max:3.1,point:null,color:"rgb(253,92,33)",label:null},{min:3.1,max:7,point:null,color:"rgb(240,15,25)",label:null},{min:7,max:20,point:null,color:"rgb(184,0,61)",label:null},{min:20,max:null,point:null,color:"rgb(253,40,250)",label:null}]},{id:"LRA",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"LRA",unit:"dBZ",maxValue:75,minValue:5,scale:null,gradient:null,remark:"分层组合反射率平均值",productType:"RADAR",items:[{min:5,max:10,point:null,color:"rgb(35,236,235)",label:null},{min:10,max:15,point:null,color:"rgb(19,160,220)",label:null},{min:15,max:20,point:null,color:"rgb(0,41,240)",label:null},{min:20,max:25,point:null,color:"rgb(43,252,62)",label:null},{min:25,max:30,point:null,color:"rgb(34,197,49)",label:null},{min:30,max:35,point:null,color:"rgb(24,142,35)",label:null},{min:35,max:40,point:null,color:"rgb(255,252,66)",label:null},{min:40,max:45,point:null,color:"rgb(229,189,51)",label:null},{min:45,max:50,point:null,color:"rgb(253,141,42)",label:null},{min:50,max:55,point:null,color:"rgb(252,0,25)",label:null},{min:55,max:60,point:null,color:"rgb(163,0,17)",label:null},{min:60,max:65,point:null,color:"rgb(99,0,10)",label:null},{min:65,max:70,point:null,color:"rgb(252,40,249)",label:null},{min:70,max:75,point:null,color:"rgb(149,89,195)",label:null},{min:75,max:null,point:null,color:"rgb(255,255,255)",label:null}]},{id:"LRM",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"LRM",unit:"dBZ",maxValue:75,minValue:5,scale:null,gradient:null,remark:"分层组合反射率最大值",productType:"RADAR",items:[{min:5,max:10,point:null,color:"rgb(35,236,235)",label:null},{min:10,max:15,point:null,color:"rgb(19,160,220)",label:null},{min:15,max:20,point:null,color:"rgb(0,41,240)",label:null},{min:20,max:25,point:null,color:"rgb(43,252,62)",label:null},{min:25,max:30,point:null,color:"rgb(34,197,49)",label:null},{min:30,max:35,point:null,color:"rgb(24,142,35)",label:null},{min:35,max:40,point:null,color:"rgb(255,252,66)",label:null},{min:40,max:45,point:null,color:"rgb(229,189,51)",label:null},{min:45,max:50,point:null,color:"rgb(253,141,42)",label:null},{min:50,max:55,point:null,color:"rgb(252,0,25)",label:null},{min:55,max:60,point:null,color:"rgb(163,0,17)",label:null},{min:60,max:65,point:null,color:"rgb(99,0,10)",label:null},{min:65,max:70,point:null,color:"rgb(252,40,249)",label:null},{min:70,max:75,point:null,color:"rgb(149,89,195)",label:null},{min:75,max:null,point:null,color:"rgb(255,255,255)",label:null}]},{id:"MAX",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"MAX",unit:"dBZ",maxValue:75,minValue:5,scale:null,gradient:null,remark:"最大值",productType:"RADAR",items:[{min:5,max:10,point:null,color:"rgb(35,236,235)",label:null},{min:10,max:15,point:null,color:"rgb(19,160,220)",label:null},{min:15,max:20,point:null,color:"rgb(0,41,240)",label:null},{min:20,max:25,point:null,color:"rgb(43,252,62)",label:null},{min:25,max:30,point:null,color:"rgb(34,197,49)",label:null},{min:30,max:35,point:null,color:"rgb(24,142,35)",label:null},{min:35,max:40,point:null,color:"rgb(255,252,66)",label:null},{min:40,max:45,point:null,color:"rgb(229,189,51)",label:null},{min:45,max:50,point:null,color:"rgb(253,141,42)",label:null},{min:50,max:55,point:null,color:"rgb(252,0,25)",label:null},{min:55,max:60,point:null,color:"rgb(163,0,17)",label:null},{min:60,max:65,point:null,color:"rgb(99,0,10)",label:null},{min:65,max:70,point:null,color:"rgb(252,40,249)",label:null},{min:70,max:75,point:null,color:"rgb(149,89,195)",label:null},{min:75,max:null,point:null,color:"rgb(255,255,255)",label:null}]},{id:"MLDA",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"MLDA",unit:"km",maxValue:21,minValue:0,scale:null,gradient:null,remark:"融化层",productType:"RADAR",items:[{min:1,max:2,point:null,color:"rgb(0,224,255)",label:null},{min:2,max:3,point:null,color:"rgb(0,176,255)",label:null},{min:3,max:4,point:null,color:"rgb(0,144,204)",label:null},{min:4,max:5,point:null,color:"rgb(50,0,150)",label:null},{min:5,max:6,point:null,color:"rgb(0,251,144)",label:null},{min:6,max:7,point:null,color:"rgb(0,187,0)",label:null},{min:7,max:8,point:null,color:"rgb(0,239,0)",label:null},{min:8,max:9,point:null,color:"rgb(254,191,0)",label:null},{min:9,max:10,point:null,color:"rgb(255,255,0)",label:null},{min:10,max:null,point:null,color:"rgb(174,0,0)",label:null}]},{id:"NHP",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"NHP",unit:"mm",maxValue:203.2,minValue:0,scale:null,gradient:null,remark:"N小时降水累计",productType:"RADAR",items:[{min:.1,max:2.54,point:null,color:"rgb(170,170,170)",label:null},{min:2.54,max:6.35,point:null,color:"rgb(118,118,118)",label:null},{min:6.35,max:12.7,point:null,color:"rgb(0,255,255)",label:null},{min:12.7,max:19.05,point:null,color:"rgb(0,175,175)",label:null},{min:19.05,max:25.4,point:null,color:"rgb(0,255,0)",label:null},{min:25.4,max:31.75,point:null,color:"rgb(0,143,0)",label:null},{min:31.75,max:38.1,point:null,color:"rgb(255,0,255)",label:null},{min:38.1,max:44.45,point:null,color:"rgb(175,50,125)",label:null},{min:44.45,max:50.8,point:null,color:"rgb(0,0,255)",label:null},{min:50.8,max:63.5,point:null,color:"rgb(50,0,150)",label:null},{min:63.5,max:76.2,point:null,color:"rgb(255,255,0)",label:null},{min:76.2,max:101.6,point:null,color:"rgb(255,170,0)",label:null},{min:101.6,max:152.4,point:null,color:"rgb(255,0,0)",label:null},{min:152.4,max:203.2,point:null,color:"rgb(174,0,0)",label:null},{min:203.2,max:null,point:null,color:"rgb(255,255,255)",label:null}]},{id:"6087b310-2b71-4a1c-8017-4aa9069b9f9b",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"PRS",unit:"hPa",maxValue:1030,minValue:990,scale:1,gradient:null,remark:"气压",productType:"STATION",items:[{min:990,max:null,point:null,color:"rgb(2, 163, 233)",label:""},{min:1e3,max:null,point:null,color:"rgb(0, 178, 193)",label:""},{min:1010,max:null,point:null,color:"rgb(213, 213, 210)",label:""},{min:1020,max:null,point:null,color:"rgb(161, 120, 73)",label:""},{min:1030,max:null,point:null,color:"rgb(159, 82, 44)",label:""}]},{id:"QPE",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"QPE",unit:"mm/h",maxValue:203.2,minValue:0,scale:null,gradient:null,remark:"定量降雨估计",productType:"RADAR",items:[{min:.1,max:2.54,point:null,color:"rgb(170,170,170)",label:null},{min:2.54,max:6.35,point:null,color:"rgb(118,118,118)",label:null},{min:6.35,max:12.7,point:null,color:"rgb(0,255,255)",label:null},{min:12.7,max:19.05,point:null,color:"rgb(0,175,175)",label:null},{min:19.05,max:25.4,point:null,color:"rgb(0,255,0)",label:null},{min:25.4,max:31.75,point:null,color:"rgb(0,143,0)",label:null},{min:31.75,max:38.1,point:null,color:"rgb(255,0,255)",label:null},{min:38.1,max:44.45,point:null,color:"rgb(175,50,125)",label:null},{min:44.45,max:50.8,point:null,color:"rgb(0,0,255)",label:null},{min:50.8,max:63.5,point:null,color:"rgb(50,0,150)",label:null},{min:63.5,max:76.2,point:null,color:"rgb(255,255,0)",label:null},{min:76.2,max:101.6,point:null,color:"rgb(255,170,0)",label:null},{min:101.6,max:152.4,point:null,color:"rgb(255,0,0)",label:null},{min:152.4,max:203.2,point:null,color:"rgb(174,0,0)",label:null},{min:203.2,max:null,point:null,color:"rgb(255,255,255)",label:null}]},{id:"f4e42831-6f35-42e8-a9a8-17a76418f674",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"RAIN1H",unit:"mm",maxValue:203.2,minValue:0,scale:null,gradient:null,remark:"1小时降雨(自动站)",productType:"STATION",items:[{min:.1,max:2.54,point:null,color:"rgb(170,170,170)",label:null},{min:2.54,max:6.35,point:null,color:"rgb(118,118,118)",label:null},{min:6.35,max:12.7,point:null,color:"rgb(0,255,255)",label:null},{min:12.7,max:19.05,point:null,color:"rgb(0,175,175)",label:null},{min:19.05,max:25.4,point:null,color:"rgb(0,255,0)",label:null},{min:25.4,max:31.75,point:null,color:"rgb(0,143,0)",label:null},{min:31.75,max:38.1,point:null,color:"rgb(255,0,255)",label:null},{min:38.1,max:44.45,point:null,color:"rgb(175,50,125)",label:null},{min:44.45,max:50.8,point:null,color:"rgb(0,0,255)",label:null},{min:50.8,max:63.5,point:null,color:"rgb(50,0,150)",label:null},{min:63.5,max:76.2,point:null,color:"rgb(255,255,0)",label:null},{min:76.2,max:101.6,point:null,color:"rgb(255,170,0)",label:null},{min:101.6,max:152.4,point:null,color:"rgb(255,0,0)",label:null},{min:152.4,max:203.2,point:null,color:"rgb(174,0,0)",label:null},{min:203.2,max:null,point:null,color:"rgb(255,255,255)",label:null}]},{id:"becd87e7-73b8-49e1-836d-131da8556077",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"RAIN24H",unit:"mm",maxValue:203.2,minValue:0,scale:null,gradient:null,remark:"24小时降雨(自动站)",productType:"STATION",items:[{min:.1,max:2.54,point:null,color:"rgb(170,170,170)",label:null},{min:2.54,max:6.35,point:null,color:"rgb(118,118,118)",label:null},{min:6.35,max:12.7,point:null,color:"rgb(0,255,255)",label:null},{min:12.7,max:19.05,point:null,color:"rgb(0,175,175)",label:null},{min:19.05,max:25.4,point:null,color:"rgb(0,255,0)",label:null},{min:25.4,max:31.75,point:null,color:"rgb(0,143,0)",label:null},{min:31.75,max:38.1,point:null,color:"rgb(255,0,255)",label:null},{min:38.1,max:44.45,point:null,color:"rgb(175,50,125)",label:null},{min:44.45,max:50.8,point:null,color:"rgb(0,0,255)",label:null},{min:50.8,max:63.5,point:null,color:"rgb(50,0,150)",label:null},{min:63.5,max:76.2,point:null,color:"rgb(255,255,0)",label:null},{min:76.2,max:101.6,point:null,color:"rgb(255,170,0)",label:null},{min:101.6,max:152.4,point:null,color:"rgb(255,0,0)",label:null},{min:152.4,max:203.2,point:null,color:"rgb(174,0,0)",label:null},{min:203.2,max:null,point:null,color:"rgb(255,255,255)",label:null}]},{id:"fe99a6e7-7357-41af-8c50-54d57432e5c8",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"RAIN3H",unit:"mm",maxValue:203.2,minValue:0,scale:null,gradient:null,remark:"3小时降雨(自动站)",productType:"STATION",items:[{min:.1,max:2.54,point:null,color:"rgb(170,170,170)",label:null},{min:2.54,max:6.35,point:null,color:"rgb(118,118,118)",label:null},{min:6.35,max:12.7,point:null,color:"rgb(0,255,255)",label:null},{min:12.7,max:19.05,point:null,color:"rgb(0,175,175)",label:null},{min:19.05,max:25.4,point:null,color:"rgb(0,255,0)",label:null},{min:25.4,max:31.75,point:null,color:"rgb(0,143,0)",label:null},{min:31.75,max:38.1,point:null,color:"rgb(255,0,255)",label:null},{min:38.1,max:44.45,point:null,color:"rgb(175,50,125)",label:null},{min:44.45,max:50.8,point:null,color:"rgb(0,0,255)",label:null},{min:50.8,max:63.5,point:null,color:"rgb(50,0,150)",label:null},{min:63.5,max:76.2,point:null,color:"rgb(255,255,0)",label:null},{min:76.2,max:101.6,point:null,color:"rgb(255,170,0)",label:null},{min:101.6,max:152.4,point:null,color:"rgb(255,0,0)",label:null},{min:152.4,max:203.2,point:null,color:"rgb(174,0,0)",label:null},{min:203.2,max:null,point:null,color:"rgb(255,255,255)",label:null}]},{id:"4966cd41-90a7-48a9-885d-bd9e41124038",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"RH2",unit:"%",maxValue:100,minValue:0,scale:1,gradient:null,remark:"2米相对湿度",productType:"NWP",items:[{min:0,max:null,point:null,color:"rgb(236, 112, 96)",label:""},{min:10,max:null,point:null,color:"rgb(225, 137, 62)",label:""},{min:20,max:null,point:null,color:"rgb(232, 202, 76)",label:""},{min:30,max:null,point:null,color:"rgb(178, 220, 87)",label:""},{min:40,max:null,point:null,color:"rgb(105, 217, 86)",label:""},{min:50,max:null,point:null,color:"rgb(92, 196, 198)",label:""},{min:60,max:null,point:null,color:"rgb(72, 158, 215)",label:""},{min:70,max:null,point:null,color:"rgb(44, 94, 246)",label:""},{min:80,max:null,point:null,color:"rgb(28, 43, 188)",label:""},{min:90,max:null,point:null,color:"rgb(12, 27, 106)",label:""},{min:100,max:null,point:null,color:"rgb(12, 27, 106)",label:""}]},{id:"39addf4f-e817-4b1c-99b3-7fbbb42ae4f7",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"RHU",unit:"%",maxValue:100,minValue:0,scale:1,gradient:null,remark:"相对湿度",productType:"NWP",items:[{min:0,max:null,point:null,color:"rgb(242, 64, 63)",label:""},{min:10,max:null,point:null,color:"rgb(255, 92, 47)",label:""},{min:20,max:null,point:null,color:"rgb(255, 172, 54)",label:""},{min:30,max:null,point:null,color:"rgb(255, 233, 76)",label:""},{min:40,max:null,point:null,color:"rgb(255, 220, 103)",label:""},{min:50,max:null,point:null,color:"rgb(13, 179, 116)",label:""},{min:60,max:null,point:null,color:"rgb(9, 175, 229)",label:""},{min:70,max:null,point:null,color:"rgb(2, 163, 223)",label:""},{min:80,max:null,point:null,color:"rgb(42, 116, 188)",label:""},{min:90,max:null,point:null,color:"rgb(102, 92, 169)",label:""}]},{id:"RVD",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"RVD",unit:"/s*1E(-4)",maxValue:60,minValue:-60,scale:1e-4,gradient:null,remark:"径向散度",productType:"RADAR",items:[{min:-60,max:-50,point:null,color:"rgb(0,0,255)",label:null},{min:-50,max:-30,point:null,color:"rgb(0,81,255)",label:null},{min:-30,max:-20,point:null,color:"rgb(99,255,255)",label:null},{min:-20,max:-10,point:null,color:"rgb(181,255,0)",label:null},{min:-10,max:-5,point:null,color:"rgb(0,255,0)",label:null},{min:-5,max:-1,point:null,color:"rgb(0,182,0)",label:null},{min:-1,max:-.2,point:null,color:"rgb(0,117,0)",label:null},{min:-.2,max:.2,point:null,color:"rgb(255,255,255)",label:null},{min:.2,max:1,point:null,color:"rgb(255,101,0)",label:null},{min:1,max:5,point:null,color:"rgb(255,182,0)",label:null},{min:5,max:10,point:null,color:"rgb(255,255,0)",label:null},{min:10,max:20,point:null,color:"rgb(255,154,255)",label:null},{min:20,max:30,point:null,color:"rgb(255,0,255)",label:null},{min:30,max:50,point:null,color:"rgb(255,121,123)",label:null},{min:50,max:60,point:null,color:"rgb(255,0,0)",label:null},{min:60,max:null,point:null,color:"rgb(132,0,0)",label:null}]},{id:"SNR",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"SNR",unit:"dB",maxValue:10,minValue:0,scale:null,gradient:null,remark:null,productType:"RADAR",items:[{min:0,max:1,point:null,color:"rgb(0,0,0)",label:null},{min:1,max:2,point:null,color:"rgb(170,0,0)",label:null},{min:2,max:3,point:null,color:"rgb(0,85,0)",label:null},{min:3,max:4,point:null,color:"rgb(170,85,0)",label:null},{min:4,max:5,point:null,color:"rgb(255,255,127)",label:null},{min:5,max:6,point:null,color:"rgb(170,170,0)",label:null},{min:6,max:7,point:null,color:"rgb(0,255,0)",label:null},{min:7,max:8,point:null,color:"rgb(85,85,255)",label:null},{min:8,max:9,point:null,color:"rgb(0,0,127)",label:null},{min:9,max:10,point:null,color:"rgb(170,0,127)",label:null},{min:10,max:null,point:null,color:"rgb(0,85,127)",label:null}]},{id:"SQI",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"SQI",unit:"",maxValue:60,minValue:-100,scale:null,gradient:null,remark:null,productType:"RADAR",items:[{min:-100,max:-60,point:null,color:"rgb(132,84,255)",label:null},{min:-60,max:-50,point:null,color:"rgb(0,0,255)",label:null},{min:-50,max:-30,point:null,color:"rgb(0,170,255)",label:null},{min:-30,max:-20,point:null,color:"rgb(170,255,255)",label:null},{min:-20,max:-10,point:null,color:"rgb(170,255,0)",label:null},{min:-10,max:-5,point:null,color:"rgb(0,255,0)",label:null},{min:-5,max:-1,point:null,color:"rgb(0,170,0)",label:null},{min:-1,max:-.2,point:null,color:"rgb(0,85,0)",label:null},{min:-.2,max:.2,point:null,color:"rgb(255,255,255)",label:null},{min:.2,max:1,point:null,color:"rgb(255,118,38)",label:null},{min:1,max:5,point:null,color:"rgb(255,170,0)",label:null},{min:5,max:10,point:null,color:"rgb(255,255,0)",label:null},{min:10,max:20,point:null,color:"rgb(255,170,255)",label:null},{min:20,max:30,point:null,color:"rgb(255,60,229)",label:null},{min:30,max:50,point:null,color:"rgb(255,146,82)",label:null},{min:50,max:60,point:null,color:"rgb(255,0,0)",label:null},{min:60,max:null,point:null,color:"rgb(170,0,0)",label:null}]},{id:"SRM",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"SRM",unit:"m/s",maxValue:64,minValue:-64,scale:null,gradient:null,remark:"相对风暴速度",productType:"RADAR",items:[{min:-64,max:-62,point:null,color:"rgb(202,253,123)",label:null},{min:-62,max:-57,point:null,color:"rgb(162,202,100)",label:null},{min:-57,max:-52,point:null,color:"rgb(106,137,50)",label:null},{min:-52,max:-47,point:null,color:"rgb(79,96,49)",label:null},{min:-47,max:-42,point:null,color:"rgb(96,157,158)",label:null},{min:-42,max:-37,point:null,color:"rgb(175,195,220)",label:null},{min:-37,max:-32,point:null,color:"rgb(164,238,253)",label:null},{min:-32,max:-27,point:null,color:"rgb(47,224,251)",label:null},{min:-27,max:-20,point:null,color:"rgb(0,134,245)",label:null},{min:-20,max:-15,point:null,color:"rgb(54,38,140)",label:null},{min:-15,max:-10,point:null,color:"rgb(59,249,154)",label:null},{min:-10,max:-5,point:null,color:"rgb(44,183,145)",label:null},{min:-5,max:-1,point:null,color:"rgb(37,139,50)",label:null},{min:-1,max:0,point:null,color:"rgb(203,188,160)",label:null},{min:0,max:1,point:null,color:"rgb(255,255,255)",label:null},{min:1,max:5,point:null,color:"rgb(246,129,57)",label:null},{min:5,max:10,point:null,color:"rgb(255,201,76)",label:null},{min:10,max:15,point:null,color:"rgb(255,251,91)",label:null},{min:15,max:20,point:null,color:"rgb(168,0,28)",label:null},{min:20,max:27,point:null,color:"rgb(204,108,48)",label:null},{min:27,max:32,point:null,color:"rgb(251,0,39)",label:null},{min:32,max:37,point:null,color:"rgb(253,190,201)",label:null},{min:37,max:42,point:null,color:"rgb(253,105,108)",label:null},{min:42,max:47,point:null,color:"rgb(147,64,65)",label:null},{min:47,max:52,point:null,color:"rgb(215,114,210)",label:null},{min:52,max:57,point:null,color:"rgb(253,40,250)",label:null},{min:57,max:62,point:null,color:"rgb(182,71,241)",label:null},{min:62,max:64,point:null,color:"rgb(113,47,149)",label:null},{min:64,max:null,point:null,color:"rgb(137,22,135)",label:null}]},{id:"STP",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"STP",unit:"mm",maxValue:203.2,minValue:0,scale:null,gradient:null,remark:"风暴总累积降水量",productType:"RADAR",items:[{min:.01,max:2.54,point:null,color:"rgb(170,170,170)",label:null},{min:2.54,max:6.35,point:null,color:"rgb(118,118,118)",label:null},{min:6.35,max:12.7,point:null,color:"rgb(0,255,255)",label:null},{min:12.7,max:19.05,point:null,color:"rgb(0,175,175)",label:null},{min:19.05,max:25.4,point:null,color:"rgb(0,255,0)",label:null},{min:25.4,max:31.75,point:null,color:"rgb(0,143,0)",label:null},{min:31.75,max:38.1,point:null,color:"rgb(255,0,255)",label:null},{min:38.1,max:44.45,point:null,color:"rgb(175,50,125)",label:null},{min:44.45,max:50.8,point:null,color:"rgb(0,0,255)",label:null},{min:50.8,max:63.5,point:null,color:"rgb(50,0,150)",label:null},{min:63.5,max:76.2,point:null,color:"rgb(255,255,0)",label:null},{min:76.2,max:101.6,point:null,color:"rgb(255,170,0)",label:null},{min:101.6,max:152.4,point:null,color:"rgb(255,0,0)",label:null},{min:152.4,max:203.2,point:null,color:"rgb(174,0,0)",label:null},{min:203.2,max:null,point:null,color:"rgb(255,255,255)",label:null}]},{id:"SWP",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"SWP",unit:"",maxValue:50,minValue:20,scale:null,gradient:null,remark:"强天气概率",productType:"RADAR",items:[{min:20,max:35,point:null,color:"rgb(0,0,255)",label:null},{min:35,max:50,point:null,color:"rgb(255,255,0)",label:null},{min:50,max:null,point:null,color:"rgb(255,0,0)",label:null}]},{id:"T",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"T",unit:"dBZ",maxValue:75,minValue:5,scale:null,gradient:null,remark:"原始反射率",productType:"RADAR",items:[{min:5,max:10,point:null,color:"rgb(35,236,235)",label:null},{min:10,max:15,point:null,color:"rgb(19,160,220)",label:null},{min:15,max:20,point:null,color:"rgb(0,41,240)",label:null},{min:20,max:25,point:null,color:"rgb(43,252,62)",label:null},{min:25,max:30,point:null,color:"rgb(34,197,49)",label:null},{min:30,max:35,point:null,color:"rgb(24,142,35)",label:null},{min:35,max:40,point:null,color:"rgb(255,252,66)",label:null},{min:40,max:45,point:null,color:"rgb(229,189,51)",label:null},{min:45,max:50,point:null,color:"rgb(253,141,42)",label:null},{min:50,max:55,point:null,color:"rgb(252,0,25)",label:null},{min:55,max:60,point:null,color:"rgb(163,0,17)",label:null},{min:60,max:65,point:null,color:"rgb(99,0,10)",label:null},{min:65,max:70,point:null,color:"rgb(252,40,249)",label:null},{min:70,max:75,point:null,color:"rgb(149,89,195)",label:null},{min:75,max:null,point:null,color:"rgb(255,255,255)",label:null}]},{id:"a77a312b-7603-46ef-800b-561d6b79565b",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"T2",unit:"℃",maxValue:36,minValue:-36,scale:1,gradient:null,remark:"2米温度",productType:"NWP",items:[{min:-36,max:null,point:null,color:"rgb(129, 1, 118)",label:""},{min:-32,max:null,point:null,color:"rgb(0, 46, 134)",label:""},{min:-28,max:null,point:null,color:"rgb(26, 91, 161)",label:""},{min:-24,max:null,point:null,color:"rgb(33, 115, 212)",label:""},{min:-20,max:null,point:null,color:"rgb(59, 157, 235)",label:""},{min:-16,max:null,point:null,color:"rgb(112, 210, 250)",label:""},{min:-12,max:null,point:null,color:"rgb(148, 224, 244)",label:""},{min:-8,max:null,point:null,color:"rgb(190, 251, 251)",label:""},{min:-4,max:null,point:null,color:"rgb(240, 255, 252)",label:""},{min:0,max:null,point:null,color:"rgb(224, 253, 218)",label:""},{min:4,max:null,point:null,color:"rgb(202, 244, 196)",label:""},{min:8,max:null,point:null,color:"rgb(193, 255, 204)",label:""},{min:12,max:null,point:null,color:"rgb(254, 254, 166)",label:""},{min:16,max:null,point:null,color:"rgb(244, 239, 192)",label:""},{min:20,max:null,point:null,color:"rgb(249, 222, 176)",label:""},{min:24,max:null,point:null,color:"rgb(251, 177, 124)",label:""},{min:28,max:null,point:null,color:"rgb(230, 144, 144)",label:""},{min:32,max:null,point:null,color:"rgb(255, 85, 0)",label:""},{min:36,max:null,point:null,color:"rgb(220, 32, 41)",label:""}]},{id:"b5651fa4-7182-461a-9afd-a14635addeb3",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"TD2",unit:"℃",maxValue:36,minValue:-36,scale:1,gradient:null,remark:"两米露点温度",productType:"NWP",items:[{min:-36,max:null,point:null,color:"rgb(129, 1, 118)",label:""},{min:-32,max:null,point:null,color:"rgb(0, 46, 134)",label:""},{min:-28,max:null,point:null,color:"rgb(26, 91, 161)",label:""},{min:-24,max:null,point:null,color:"rgb(33, 115, 212)",label:""},{min:-20,max:null,point:null,color:"rgb(59, 157, 235)",label:""},{min:-16,max:null,point:null,color:"rgb(112, 210, 250)",label:""},{min:-12,max:null,point:null,color:"rgb(148, 224, 244)",label:""},{min:-8,max:null,point:null,color:"rgb(190, 251, 251)",label:""},{min:-4,max:null,point:null,color:"rgb(240, 255, 252)",label:""},{min:0,max:null,point:null,color:"rgb(224, 253, 218)",label:""},{min:4,max:null,point:null,color:"rgb(202, 244, 196)",label:""},{min:8,max:null,point:null,color:"rgb(193, 255, 204)",label:""},{min:12,max:null,point:null,color:"rgb(254, 254, 166)",label:""},{min:16,max:null,point:null,color:"rgb(244, 239, 192)",label:""},{min:20,max:null,point:null,color:"rgb(249, 222, 176)",label:""},{min:24,max:null,point:null,color:"rgb(251, 177, 124)",label:""},{min:28,max:null,point:null,color:"rgb(230, 144, 144)",label:""},{min:32,max:null,point:null,color:"rgb(255, 85, 0)",label:""},{min:36,max:null,point:null,color:"rgb(220, 32, 41)",label:""}]},{id:"TOPS",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"TOPS",unit:"km",maxValue:21,minValue:0,scale:null,gradient:null,remark:"回波顶高",productType:"RADAR",items:[{min:0,max:2,point:null,color:"rgb(190,190,190)",label:null},{min:2,max:3,point:null,color:"rgb(118,118,118)",label:null},{min:3,max:5,point:null,color:"rgb(0,224,255)",label:null},{min:5,max:6,point:null,color:"rgb(0,176,255)",label:null},{min:6,max:8,point:null,color:"rgb(0,144,204)",label:null},{min:8,max:9,point:null,color:"rgb(50,0,150)",label:null},{min:9,max:11,point:null,color:"rgb(0,254,144)",label:null},{min:11,max:12,point:null,color:"rgb(0,187,0)",label:null},{min:12,max:14,point:null,color:"rgb(0,239,0)",label:null},{min:14,max:15,point:null,color:"rgb(254,191,0)",label:null},{min:15,max:17,point:null,color:"rgb(255,255,60)",label:null},{min:17,max:18,point:null,color:"rgb(174,0,0)",label:null},{min:18,max:20,point:null,color:"rgb(255,0,0)",label:null},{min:20,max:21,point:null,color:"rgb(255,255,255)",label:null},{min:21,max:null,point:null,color:"rgb(231,0,255)",label:null}]},{id:"V",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"V",unit:"m/s",maxValue:64,minValue:-64,scale:null,gradient:null,remark:"径向速度",productType:"RADAR",items:[{min:-64,max:-62,point:null,color:"rgb(202,253,123)",label:null},{min:-62,max:-57,point:null,color:"rgb(162,202,100)",label:null},{min:-57,max:-52,point:null,color:"rgb(106,137,50)",label:null},{min:-52,max:-47,point:null,color:"rgb(79,96,49)",label:null},{min:-47,max:-42,point:null,color:"rgb(96,157,158)",label:null},{min:-42,max:-37,point:null,color:"rgb(175,195,220)",label:null},{min:-37,max:-32,point:null,color:"rgb(164,238,253)",label:null},{min:-32,max:-27,point:null,color:"rgb(47,224,251)",label:null},{min:-27,max:-20,point:null,color:"rgb(0,134,245)",label:null},{min:-20,max:-15,point:null,color:"rgb(54,38,140)",label:null},{min:-15,max:-10,point:null,color:"rgb(59,249,154)",label:null},{min:-10,max:-5,point:null,color:"rgb(44,183,145)",label:null},{min:-5,max:-1,point:null,color:"rgb(37,139,50)",label:null},{min:-1,max:0,point:null,color:"rgb(203,188,160)",label:null},{min:0,max:1,point:null,color:"rgb(255,255,255)",label:null},{min:1,max:5,point:null,color:"rgb(246,129,57)",label:null},{min:5,max:10,point:null,color:"rgb(255,201,76)",label:null},{min:10,max:15,point:null,color:"rgb(255,251,91)",label:null},{min:15,max:20,point:null,color:"rgb(168,0,28)",label:null},{min:20,max:27,point:null,color:"rgb(204,108,48)",label:null},{min:27,max:32,point:null,color:"rgb(251,0,39)",label:null},{min:32,max:37,point:null,color:"rgb(253,190,201)",label:null},{min:37,max:42,point:null,color:"rgb(253,105,108)",label:null},{min:42,max:47,point:null,color:"rgb(147,64,65)",label:null},{min:47,max:52,point:null,color:"rgb(215,114,210)",label:null},{min:52,max:57,point:null,color:"rgb(253,40,250)",label:null},{min:57,max:62,point:null,color:"rgb(182,71,241)",label:null},{min:62,max:64,point:null,color:"rgb(113,47,149)",label:null},{min:64,max:null,point:null,color:"rgb(137,22,135)",label:null}]},{id:"VAD",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"VAD",unit:"m/s",maxValue:50,minValue:0,scale:null,gradient:null,remark:"速度方位",productType:"RADAR",items:[{min:0,max:5,point:null,color:"rgb(150,150,150)",label:null},{min:5,max:18,point:null,color:"rgb(241,208,231)",label:null},{min:18,max:30,point:null,color:"rgb(162,130,144)",label:null},{min:30,max:41,point:null,color:"rgb(43,166,41)",label:null},{min:41,max:46,point:null,color:"rgb(255,255,127)",label:null},{min:46,max:50,point:null,color:"rgb(170,0,0)",label:null},{min:50,max:null,point:null,color:"rgb(0,0,127)",label:null}]},{id:"VIL",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"VIL",unit:"kg/m^2",maxValue:70,minValue:1,scale:null,gradient:null,remark:"垂直累积液态水含量",productType:"RADAR",items:[{min:1,max:5,point:null,color:"rgb(156,156,156)",label:null},{min:5,max:10,point:null,color:"rgb(118,118,118)",label:null},{min:10,max:15,point:null,color:"rgb(250,170,170)",label:null},{min:15,max:20,point:null,color:"rgb(238,140,140)",label:null},{min:20,max:25,point:null,color:"rgb(201,112,112)",label:null},{min:25,max:30,point:null,color:"rgb(0,251,144)",label:null},{min:30,max:35,point:null,color:"rgb(0,187,0)",label:null},{min:35,max:40,point:null,color:"rgb(255,252,112)",label:null},{min:40,max:45,point:null,color:"rgb(208,208,96)",label:null},{min:45,max:50,point:null,color:"rgb(255,96,96)",label:null},{min:50,max:55,point:null,color:"rgb(252,0,25)",label:null},{min:55,max:60,point:null,color:"rgb(174,0,0)",label:null},{min:60,max:65,point:null,color:"rgb(0,0,255)",label:null},{min:65,max:70,point:null,color:"rgb(255,255,255)",label:null},{min:70,max:null,point:null,color:"rgb(231,0,255)",label:null}]},{id:"76fabf55-8a1c-4933-ace6-97923879d0cd",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"VIS",unit:"KM",maxValue:15,minValue:0,scale:.001,gradient:null,remark:"能见度",productType:"STATION",items:[{min:0,max:null,point:null,color:"rgb(196, 84, 178)",label:""},{min:1,max:null,point:null,color:"rgb(172, 77, 75)",label:""},{min:5,max:null,point:null,color:"rgb(102, 92, 169)",label:""},{min:10,max:null,point:null,color:"rgb(111, 174, 95)",label:""},{min:15,max:null,point:null,color:"rgb(86, 176, 121)",label:""}]},{id:"VWP",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"VWP",unit:"",maxValue:10,minValue:0,scale:null,gradient:null,remark:"风廓线",productType:"RADAR",items:[{min:0,max:2,point:null,color:"rgb(170,255,0)",label:null},{min:2,max:4,point:null,color:"rgb(170,255,127)",label:null},{min:4,max:6,point:null,color:"rgb(170,255,255)",label:null},{min:6,max:8,point:null,color:"rgb(255,255,127)",label:null},{min:8,max:10,point:null,color:"rgb(255,255,0)",label:null},{min:10,max:null,point:null,color:"rgb(255,170,0)",label:null}]},{id:"78475404-1a27-44a6-914c-4860d457ed57",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"WIND",unit:"m/s",maxValue:30,minValue:0,scale:1,gradient:null,remark:"风速",productType:"NWP",items:[{min:0,max:null,point:null,color:"rgb(102, 92, 169)",label:""},{min:3,max:null,point:null,color:"rgb(42, 116, 188)",label:""},{min:5,max:null,point:null,color:"rgb(9, 175, 229)",label:""},{min:10,max:null,point:null,color:"rgb(13, 179, 116)",label:""},{min:15,max:null,point:null,color:"rgb(237, 213, 39)",label:""},{min:20,max:null,point:null,color:"rgb(196, 84, 178)",label:""},{min:30,max:null,point:null,color:"rgb(54, 137, 215)",label:""}]},{id:"AHP",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"AHP",unit:"",maxValue:150,minValue:0,scale:null,gradient:null,remark:null,productType:"RADAR",items:[{min:0,max:.1,point:null,color:"rgb(255,255,255)",label:null},{min:.1,max:1,point:null,color:"rgb(151,222,249)",label:null},{min:1,max:5,point:null,color:"rgb(10,146,219)",label:null},{min:5,max:10,point:null,color:"rgb(18,122,201)",label:null},{min:10,max:20,point:null,color:"rgb(160,200,43)",label:null},{min:20,max:30,point:null,color:"rgb(255,242,0)",label:null},{min:30,max:50,point:null,color:"rgb(250,180,10)",label:null},{min:50,max:70,point:null,color:"rgb(244,103,23)",label:null},{min:70,max:100,point:null,color:"rgb(237,28,36)",label:null},{min:100,max:150,point:null,color:"rgb(236,0,140)",label:null},{min:150,max:null,point:null,color:"rgb(159,67,116)",label:null}]},{id:"2f685afa-1557-4bc4-a916-4a2985cf84c1",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"WI",unit:"m/s",maxValue:48,minValue:0,scale:1,gradient:null,remark:"大风指数",productType:"RADAR",items:[{min:0,max:20,point:null,color:"rgb(228, 234, 206)",label:""},{min:20,max:24,point:null,color:"rgb(206, 227, 238)",label:""},{min:24,max:26,point:null,color:"rgb(181, 202, 255)",label:""},{min:26,max:32,point:null,color:"rgb(127, 151, 255)",label:""},{min:32,max:36,point:null,color:"rgb(171, 207, 99)",label:""},{min:36,max:44,point:null,color:"rgb(232, 245, 158)",label:""},{min:44,max:48,point:null,color:"rgb(255, 209, 33)",label:""},{min:48,max:null,point:null,color:"rgb(246, 144, 13)",label:""}]},{id:"7da262ab-9f3b-48f5-b2ef-bcfb6b7f0129",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"SRH",unit:"m^2/s^2",maxValue:2400,minValue:-1600,scale:1,gradient:null,remark:"风暴相对螺旋度",productType:"RADAR",items:[{min:-1600,max:-1200,point:null,color:"rgb(66, 106, 175)",label:""},{min:-1200,max:-800,point:null,color:"rgb(101, 157, 201)",label:""},{min:-800,max:-400,point:null,color:"rgb(129, 183, 215)",label:""},{min:-400,max:0,point:null,color:"rgb(176, 219, 235)",label:""},{min:0,max:400,point:null,color:"rgb(241, 235, 197)",label:""},{min:400,max:800,point:null,color:"rgb(254, 207, 128)",label:""},{min:800,max:1200,point:null,color:"rgb(251, 163, 91)",label:""},{min:1200,max:1600,point:null,color:"rgb(246, 124, 73)",label:""},{min:1600,max:2e3,point:null,color:"rgb(255, 90, 59)",label:""},{min:2e3,max:2400,point:null,color:"rgb(221, 56, 43)",label:""},{min:2400,max:null,point:null,color:"rgb(193, 27, 39)",label:""}]},{id:"379bc585-9bb8-41dc-8025-508aabbcea09",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"WINDF",unit:"m/s",maxValue:24.5,minValue:0,scale:1,gradient:!1,remark:"短临外推风力产品",productType:"FORECAST",items:[{min:3.4,max:5.5,point:null,color:"rgb(255,255,255)",label:""},{min:5.5,max:8,point:null,color:"rgb(138, 55, 244)",label:""},{min:8,max:10.8,point:null,color:"rgb(1, 37, 230)",label:""},{min:10.8,max:13.9,point:null,color:"rgb(30, 186, 142)",label:""},{min:13.9,max:17.2,point:null,color:"rgb(255, 255, 72)",label:""},{min:17.2,max:20.8,point:null,color:"rgb(251, 203, 58)",label:""},{min:20.8,max:24.5,point:null,color:"rgb(160, 0, 14)",label:""},{min:24.5,max:null,point:null,color:"rgb(248, 144, 147)",label:""}]},{id:"a3dc1bc8-5302-4062-906b-56b84874189e",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"CI",unit:null,maxValue:.9,minValue:0,scale:1,gradient:null,remark:"对流指数",productType:"RADAR",items:[{min:0,max:.1,point:null,color:"rgb(35, 236, 235)",label:""},{min:.1,max:.2,point:null,color:"rgb(19, 160, 220)",label:""},{min:.2,max:.3,point:null,color:"rgb(0, 41, 240)",label:""},{min:.3,max:.4,point:null,color:"rgb(43, 252, 62)",label:""},{min:.4,max:.5,point:null,color:"rgb(34, 197, 49)",label:""},{min:.5,max:.6,point:null,color:"rgb(24, 142, 35)",label:""},{min:.6,max:.7,point:null,color:"rgb(255, 252, 66)",label:""},{min:.7,max:.8,point:null,color:"rgb(229, 189, 51)",label:""},{min:.8,max:.9,point:null,color:"rgb(253, 141, 42)",label:""},{min:.9,max:null,point:null,color:"rgb(252, 0, 25)",label:""}]},{id:"b267b3ee-ebea-4a90-911d-799f78e0c583",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"WINDW",unit:"m/s",maxValue:34,minValue:-34,scale:1,gradient:null,remark:"垂直风速",productType:"RADAR",items:[{min:-34,max:-32,point:null,color:"rgb(7, 30, 70)",label:""},{min:-32,max:-28,point:null,color:"rgb(7, 47, 107)",label:""},{min:-28,max:-24,point:null,color:"rgb(6, 87, 156)",label:""},{min:-24,max:-20,point:null,color:"rgb(32, 113, 181)",label:""},{min:-20,max:-16,point:null,color:"rgb(33, 125, 202)",label:""},{min:-16,max:-12,point:null,color:"rgb(56, 142, 225)",label:""},{min:-12,max:-8,point:null,color:"rgb(84, 164, 242)",label:""},{min:-8,max:-4,point:null,color:"rgb(138, 196, 245)",label:""},{min:-4,max:-1,point:null,color:"rgb(218, 240, 255)",label:""},{min:-1,max:0,point:null,color:"rgb(255, 255, 255)",label:""},{min:0,max:1,point:null,color:"rgb(255, 224, 223)",label:""},{min:1,max:4,point:null,color:"rgb(252, 186, 170)",label:""},{min:4,max:8,point:null,color:"rgb(252, 146, 114)",label:""},{min:8,max:16,point:null,color:"rgb(251, 105, 74)",label:""},{min:16,max:20,point:null,color:"rgb(240, 60, 42)",label:""},{min:20,max:24,point:null,color:"rgb(204, 23, 31)",label:""},{min:24,max:28,point:null,color:"rgb(166, 15, 19)",label:""},{min:28,max:32,point:null,color:"rgb(120, 10, 16)",label:""},{min:32,max:34,point:null,color:"rgb(95, 0, 0)",label:""},{min:34,max:null,point:null,color:"rgb(122, 22, 140)",label:""}]},{id:"0f132d83-b662-4a3a-81d9-0aa3aa23b122",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"QSE",unit:"mm",maxValue:40,minValue:0,scale:1,gradient:null,remark:"定量降雪估计",productType:"RADAR",items:[{min:0,max:.1,point:null,color:"rgb(245, 245, 245)",label:""},{min:.1,max:.2,point:null,color:"rgb(235, 235, 235)",label:""},{min:.2,max:.5,point:null,color:"rgb(225, 225, 225)",label:""},{min:.5,max:1,point:null,color:"rgb(215, 215, 215)",label:""},{min:1,max:1.5,point:null,color:"rgb(181, 206, 231)",label:""},{min:1.5,max:2,point:null,color:"rgb(156, 189, 222)",label:""},{min:2,max:3,point:null,color:"rgb(132, 173, 214)",label:""},{min:3,max:5,point:null,color:"rgb(107, 156, 198)",label:""},{min:5,max:7,point:null,color:"rgb(82, 140, 189)",label:""},{min:7,max:10,point:null,color:"rgb(57, 119, 181)",label:""},{min:10,max:15,point:null,color:"rgb(33, 103, 173)",label:""},{min:15,max:20,point:null,color:"rgb(24, 78, 132)",label:""},{min:20,max:30,point:null,color:"rgb(19, 50, 109)",label:""},{min:30,max:40,point:null,color:"rgb(15, 50, 89)",label:""},{min:40,max:null,point:null,color:"rgb(7, 24, 42)",label:""}]},{id:"d053b1cf-f10f-44c7-8dbf-5e6e1fc660f3",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"OHS",unit:"mm",maxValue:40,minValue:0,scale:1,gradient:null,remark:"一小时累积降雪量",productType:"RADAR",items:[{min:0,max:.1,point:null,color:"rgb(245, 245, 245)",label:""},{min:.1,max:.2,point:null,color:"rgb(235, 235, 235)",label:""},{min:.2,max:.5,point:null,color:"rgb(225, 225, 225)",label:""},{min:.5,max:1,point:null,color:"rgb(215, 215, 215)",label:""},{min:1,max:1.5,point:null,color:"rgb(181, 206, 231)",label:""},{min:1.5,max:2,point:null,color:"rgb(156, 189, 222)",label:""},{min:2,max:3,point:null,color:"rgb(132, 173, 214)",label:""},{min:3,max:5,point:null,color:"rgb(107, 156, 198)",label:""},{min:5,max:7,point:null,color:"rgb(82, 140, 189)",label:""},{min:7,max:10,point:null,color:"rgb(57, 119, 181)",label:""},{min:10,max:15,point:null,color:"rgb(33, 103, 173)",label:""},{min:15,max:20,point:null,color:"rgb(24, 78, 132)",label:""},{min:20,max:30,point:null,color:"rgb(19, 50, 109)",label:""},{min:30,max:40,point:null,color:"rgb(15, 50, 89)",label:""},{min:40,max:null,point:null,color:"rgb(7, 24, 42)",label:""}]},{id:"bdc51549-4e66-48ba-9ee0-cd0fc4d0a749",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"THS",unit:"mm",maxValue:40,minValue:0,scale:1,gradient:null,remark:"三小时累积降雪量",productType:"RADAR",items:[{min:0,max:.1,point:null,color:"rgb(245, 245, 245)",label:""},{min:.1,max:.2,point:null,color:"rgb(235, 235, 235)",label:""},{min:.2,max:.5,point:null,color:"rgb(225, 225, 225)",label:""},{min:.5,max:1,point:null,color:"rgb(215, 215, 215)",label:""},{min:1,max:1.5,point:null,color:"rgb(181, 206, 231)",label:""},{min:1.5,max:2,point:null,color:"rgb(156, 189, 222)",label:""},{min:2,max:3,point:null,color:"rgb(132, 173, 214)",label:""},{min:3,max:5,point:null,color:"rgb(107, 156, 198)",label:""},{min:5,max:7,point:null,color:"rgb(82, 140, 189)",label:""},{min:7,max:10,point:null,color:"rgb(57, 119, 181)",label:""},{min:10,max:15,point:null,color:"rgb(33, 103, 173)",label:""},{min:15,max:20,point:null,color:"rgb(24, 78, 132)",label:""},{min:20,max:30,point:null,color:"rgb(19, 50, 109)",label:""},{min:30,max:40,point:null,color:"rgb(15, 50, 89)",label:""},{min:40,max:null,point:null,color:"rgb(7, 24, 42)",label:""}]},{id:"CR",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"CR",unit:"dBZ",maxValue:75,minValue:5,scale:null,gradient:null,remark:"组合反射率",productType:"RADAR",items:[{min:5,max:10,point:null,color:"rgb(35,236,235)",label:null},{min:10,max:15,point:null,color:"rgb(19,160,220)",label:null},{min:15,max:20,point:null,color:"rgb(0,41,240)",label:null},{min:20,max:25,point:null,color:"rgb(43,252,62)",label:null},{min:25,max:30,point:null,color:"rgb(34,197,49)",label:null},{min:30,max:35,point:null,color:"rgb(24,142,35)",label:null},{min:35,max:40,point:null,color:"rgb(255,252,66)",label:null},{min:40,max:45,point:null,color:"rgb(229,189,51)",label:null},{min:45,max:50,point:null,color:"rgb(253,141,42)",label:null},{min:50,max:55,point:null,color:"rgb(252,0,25)",label:null},{min:55,max:60,point:null,color:"rgb(163,0,17)",label:null},{min:60,max:65,point:null,color:"rgb(99,0,10)",label:null},{min:65,max:70,point:null,color:"rgb(252,40,249)",label:null},{min:70,max:75,point:null,color:"rgb(149,89,195)",label:null},{min:75,max:null,point:null,color:"rgb(255,255,255)",label:null}]},{id:"1b1c7deb-3cb0-4158-9e37-2c622ea5e721",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"QSD",unit:"cm",maxValue:40,minValue:0,scale:1,gradient:null,remark:"瞬时新增积雪量",productType:"RADAR",items:[{min:0,max:.1,point:null,color:"rgb(245, 245, 245)",label:""},{min:.1,max:.2,point:null,color:"rgb(235, 235, 235)",label:""},{min:.2,max:.5,point:null,color:"rgb(225, 225, 225)",label:""},{min:.5,max:1,point:null,color:"rgb(215, 215, 215)",label:""},{min:1,max:1.5,point:null,color:"rgb(181, 206, 231)",label:""},{min:1.5,max:2,point:null,color:"rgb(156, 189, 222)",label:""},{min:2,max:3,point:null,color:"rgb(132, 173, 214)",label:""},{min:3,max:5,point:null,color:"rgb(107, 156, 198)",label:""},{min:5,max:7,point:null,color:"rgb(82, 140, 189)",label:""},{min:7,max:10,point:null,color:"rgb(57, 119, 181)",label:""},{min:10,max:15,point:null,color:"rgb(33, 103, 173)",label:""},{min:15,max:20,point:null,color:"rgb(24, 78, 132)",label:""},{min:20,max:30,point:null,color:"rgb(19, 50, 109)",label:""},{min:30,max:40,point:null,color:"rgb(15, 50, 89)",label:""},{min:40,max:null,point:null,color:"rgb(7, 24, 42)",label:""}]},{id:"a7a916a3-8597-4848-8ae9-c4d2ea10bab1",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"THD",unit:"cm",maxValue:40,minValue:0,scale:1,gradient:null,remark:"三小时累积积雪量",productType:"RADAR",items:[{min:0,max:.1,point:null,color:"rgb(245, 245, 245)",label:""},{min:.1,max:.2,point:null,color:"rgb(235, 235, 235)",label:""},{min:.2,max:.5,point:null,color:"rgb(225, 225, 225)",label:""},{min:.5,max:1,point:null,color:"rgb(215, 215, 215)",label:""},{min:1,max:1.5,point:null,color:"rgb(181, 206, 231)",label:""},{min:1.5,max:2,point:null,color:"rgb(156, 189, 222)",label:""},{min:2,max:3,point:null,color:"rgb(132, 173, 214)",label:""},{min:3,max:5,point:null,color:"rgb(107, 156, 198)",label:""},{min:5,max:7,point:null,color:"rgb(82, 140, 189)",label:""},{min:7,max:10,point:null,color:"rgb(57, 119, 181)",label:""},{min:10,max:15,point:null,color:"rgb(33, 103, 173)",label:""},{min:15,max:20,point:null,color:"rgb(24, 78, 132)",label:""},{min:20,max:30,point:null,color:"rgb(19, 50, 109)",label:""},{min:30,max:40,point:null,color:"rgb(15, 50, 89)",label:""},{min:40,max:null,point:null,color:"rgb(7, 24, 42)",label:""}]},{id:"b59a27fc-b0f0-4458-a13c-c1137b54522b",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"OHD",unit:"cm",maxValue:40,minValue:0,scale:1,gradient:null,remark:"一小时累积积雪量",productType:"RADAR",items:[{min:0,max:.1,point:null,color:"rgb(245, 245, 245)",label:""},{min:.1,max:.2,point:null,color:"rgb(235, 235, 235)",label:""},{min:.2,max:.5,point:null,color:"rgb(225, 225, 225)",label:""},{min:.5,max:1,point:null,color:"rgb(215, 215, 215)",label:""},{min:1,max:1.5,point:null,color:"rgb(181, 206, 231)",label:""},{min:1.5,max:2,point:null,color:"rgb(156, 189, 222)",label:""},{min:2,max:3,point:null,color:"rgb(132, 173, 214)",label:""},{min:3,max:5,point:null,color:"rgb(107, 156, 198)",label:""},{min:5,max:7,point:null,color:"rgb(82, 140, 189)",label:""},{min:7,max:10,point:null,color:"rgb(57, 119, 181)",label:""},{min:10,max:15,point:null,color:"rgb(33, 103, 173)",label:""},{min:15,max:20,point:null,color:"rgb(24, 78, 132)",label:""},{min:20,max:30,point:null,color:"rgb(19, 50, 109)",label:""},{min:30,max:40,point:null,color:"rgb(15, 50, 89)",label:""},{min:40,max:null,point:null,color:"rgb(7, 24, 42)",label:""}]},{id:"e262c8ac-ed54-4831-9b6c-7b292ab8244b",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"HCL",unit:"",maxValue:11,minValue:0,scale:null,gradient:null,remark:"水凝物分类",productType:"RADAR",items:[{min:-999,max:1,point:null,color:"rgb(0,255,46)",label:"小雨"},{min:1,max:2,point:null,color:"rgb(0,204,100)",label:"中雨"},{min:2,max:3,point:null,color:"rgb(2,100,26)",label:"大雨"},{min:3,max:4,point:null,color:"rgb(101,129,28)",label:"大雨滴"},{min:4,max:5,point:null,color:"rgb(253,1,0)",label:"冰雹"},{min:5,max:6,point:null,color:"rgb(255,202,129)",label:"雨加雹"},{min:6,max:7,point:null,color:"rgb(255,0,250)",label:"霰/雹"},{min:7,max:8,point:null,color:"rgb(0,0,251)",label:"干雪"},{min:8,max:9,point:null,color:"rgb(25,25,134)",label:"湿雪"},{min:9,max:10,point:null,color:"rgb(141,57,242)",label:"H-冰晶"},{min:10,max:11,point:null,color:"rgb(117,113,233)",label:"V-冰晶"},{min:11,max:null,point:null,color:"rgb(204,204,192)",label:"地物杂波"}]},{id:"26d9b740-cc61-4807-b879-ce7a4f59f723",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"Z",unit:"dBZ",maxValue:75,minValue:5,scale:null,gradient:null,remark:"反射率",productType:"RADAR",items:[{min:5,max:10,point:null,color:"rgb(35,236,235)",label:null},{min:10,max:15,point:null,color:"rgb(19,160,220)",label:null},{min:15,max:20,point:null,color:"rgb(0,41,240)",label:null},{min:20,max:25,point:null,color:"rgb(43,252,62)",label:null},{min:25,max:30,point:null,color:"rgb(34,197,49)",label:null},{min:30,max:35,point:null,color:"rgb(24,142,35)",label:null},{min:35,max:40,point:null,color:"rgb(255,252,66)",label:null},{min:40,max:45,point:null,color:"rgb(229,189,51)",label:null},{min:45,max:50,point:null,color:"rgb(253,141,42)",label:null},{min:50,max:55,point:null,color:"rgb(252,0,25)",label:null},{min:55,max:60,point:null,color:"rgb(163,0,17)",label:null},{min:60,max:65,point:null,color:"rgb(99,0,10)",label:null},{min:65,max:70,point:null,color:"rgb(252,40,249)",label:null},{min:70,max:75,point:null,color:"rgb(149,89,195)",label:null},{min:75,max:null,point:null,color:"rgb(255,255,255)",label:null}]},{id:"e84ed56b-d643-4f65-9820-75b361eab5bb",groupId:"771171cb-4954-4a7c-b6f2-5441c6a0a523",name:"SNRH",unit:"dB",maxValue:10,minValue:0,scale:null,gradient:null,remark:null,productType:"RADAR",items:[{min:0,max:1,point:null,color:"rgb(0,0,0)",label:null},{min:1,max:2,point:null,color:"rgb(170,0,0)",label:null},{min:2,max:3,point:null,color:"rgb(0,85,0)",label:null},{min:3,max:4,point:null,color:"rgb(170,85,0)",label:null},{min:4,max:5,point:null,color:"rgb(255,255,127)",label:null},{min:5,max:6,point:null,color:"rgb(170,170,0)",label:null},{min:6,max:7,point:null,color:"rgb(0,255,0)",label:null},{min:7,max:8,point:null,color:"rgb(85,85,255)",label:null},{min:8,max:9,point:null,color:"rgb(0,0,127)",label:null},{min:9,max:10,point:null,color:"rgb(170,0,127)",label:null},{min:10,max:null,point:null,color:"rgb(0,85,127)",label:null}]},{id:"8ea9b3bb-26e4-4f93-9dfb-6164bf1c1c2e",groupId:"66bcaa69938cbc67fb027cb0",name:"THP",unit:"mm",maxValue:203.2,minValue:0,scale:null,gradient:null,remark:"3小时降雨累计",productType:"RADAR",items:[{min:.1,max:2.54,point:null,color:"rgb(170,170,170)",label:null},{min:2.54,max:6.35,point:null,color:"rgb(118,118,118)",label:null},{min:6.35,max:12.7,point:null,color:"rgb(0,255,255)",label:null},{min:12.7,max:19.05,point:null,color:"rgb(0,175,175)",label:null},{min:19.05,max:25.4,point:null,color:"rgb(0,255,0)",label:null},{min:25.4,max:31.75,point:null,color:"rgb(0,143,0)",label:null},{min:31.75,max:38.1,point:null,color:"rgb(255,0,255)",label:null},{min:38.1,max:44.45,point:null,color:"rgb(175,50,125)",label:null},{min:44.45,max:50.8,point:null,color:"rgb(0,0,255)",label:null},{min:50.8,max:63.5,point:null,color:"rgb(50,0,150)",label:null},{min:63.5,max:76.2,point:null,color:"rgb(255,255,0)",label:null},{min:76.2,max:101.6,point:null,color:"rgb(255,170,0)",label:null},{min:101.6,max:152.4,point:null,color:"rgb(255,0,0)",label:null},{min:152.4,max:203.2,point:null,color:"rgb(174,0,0)",label:null},{min:203.2,max:null,point:null,color:"rgb(255,255,255)",label:null}]},{id:"bcbadf6c-4507-4ca5-9806-cb120a880def",groupId:"66bcaa69938cbc67fb027cb0",name:"RANLV",unit:"",maxValue:2,minValue:0,scale:null,gradient:null,remark:null,productType:null,items:[{min:-999,max:1,point:null,color:"rgb(0,255,0)",label:"小雨"},{min:1,max:2,point:null,color:"rgb(255,255,0)",label:"中雨"},{min:2,max:9999,point:null,color:"rgb(255,0,0)",label:"大雨"}]},{id:"6fc02a9b-94d1-4b46-965a-01aee8955714",groupId:"66bcaa69938cbc67fb027cb0",name:"ALA",unit:"dBZ",maxValue:100,minValue:0,scale:1,gradient:null,remark:null,productType:"OTHER",items:[{min:15,max:25,point:null,color:"rgb(0, 229, 255)",label:null},{min:25,max:35,point:null,color:"rgb(255, 209, 0)",label:null},{min:35,max:null,point:null,color:"rgb(255, 39, 0)",label:null}]},{id:"d663dc16-5dae-4fa8-9d9f-241c03cfe1ed",groupId:"66bcaa69938cbc67fb027cb0",name:"RCR",unit:"",maxValue:9999,minValue:20,scale:null,gradient:null,remark:null,productType:null,items:[{min:20,max:30,point:null,color:"rgb(0,255,0)",label:"小雨"},{min:30,max:50,point:null,color:"rgb(255,255,0)",label:"中雨"},{min:50,max:9999,point:null,color:"rgb(255,0,0)",label:"大雨"}]},{id:"a67f5524-7bed-4fa3-9062-20fabd150160",groupId:"66bcaa69938cbc67fb027cb0",name:"RCRN",unit:"",maxValue:9999,minValue:20,scale:null,gradient:null,remark:null,productType:null,items:[{min:5,max:20,point:null,color:"rgb(118, 230, 232)",label:null},{min:20,max:30,point:null,color:"rgb(0,255,0)",label:""},{min:30,max:50,point:null,color:"rgb(255,255,0)",label:""},{min:50,max:9999,point:null,color:"rgb(255,0,0)",label:""}]},{id:"6928e78a-ef8f-499e-806b-ed8fb3c94a99",groupId:"672c72d23fc19a7818f89da3",name:"GOP",unit:"",maxValue:2,minValue:0,scale:null,gradient:null,remark:null,productType:null,items:[{min:-999,max:2,point:null,color:"rgb(0,255,0)",label:"小雨"},{min:2,max:3,point:null,color:"rgb(255,255,0)",label:"中雨"},{min:3,max:9999,point:null,color:"rgb(255,0,0)",label:"大雨"}]},{id:"CC",groupId:"672c72d23fc19a7818f89da3",name:"CC",unit:"",maxValue:.99,minValue:0,scale:null,gradient:null,remark:"相关系数",productType:"RADAR",items:[{min:0,max:.1,point:null,color:"rgb(0,73,249)",label:null},{min:.1,max:.3,point:null,color:"rgb(36,239,238)",label:null},{min:.3,max:.5,point:null,color:"rgb(27,185,189)",label:null},{min:.5,max:.6,point:null,color:"rgb(20,130,124)",label:null},{min:.6,max:.7,point:null,color:"rgb(23,135,65)",label:null},{min:.7,max:.8,point:null,color:"rgb(31,180,61)",label:null},{min:.8,max:.85,point:null,color:"rgb(37,215,56)",label:null},{min:.85,max:.9,point:null,color:"rgb(43,253,62)",label:null},{min:.9,max:.92,point:null,color:"rgb(255,253,87)",label:null},{min:.92,max:.94,point:null,color:"rgb(255,237,63)",label:null},{min:.94,max:.95,point:null,color:"rgb(255,195,53)",label:null},{min:.95,max:.96,point:null,color:"rgb(253,161,46)",label:null},{min:.96,max:.97,point:null,color:"rgb(254,112,37)",label:null},{min:.97,max:.98,point:null,color:"rgb(253,32,27)",label:null},{min:.98,max:.99,point:null,color:"rgb(190,0,19)",label:null},{min:.99,max:null,point:null,color:"rgb(209,25,165)",label:null}]},{id:"W",groupId:"672c72d23fc19a7818f89da3",name:"W",unit:"m/s",maxValue:14,minValue:0,scale:null,gradient:null,remark:"基本谱宽",productType:"RADAR",items:[{min:0,max:1,point:null,color:"rgb(46,59,249)",label:null},{min:1,max:2,point:null,color:"rgb(0,103,250)",label:null},{min:2,max:3,point:null,color:"rgb(37,163,251)",label:null},{min:3,max:4,point:null,color:"rgb(54,218,253)",label:null},{min:4,max:5,point:null,color:"rgb(65,255,221)",label:null},{min:5,max:6,point:null,color:"rgb(68,254,152)",label:null},{min:6,max:7,point:null,color:"rgb(70,253,83)",label:null},{min:7,max:8,point:null,color:"rgb(145,253,64)",label:null},{min:8,max:9,point:null,color:"rgb(197,253,65)",label:null},{min:9,max:10,point:null,color:"rgb(238,253,66)",label:null},{min:10,max:11,point:null,color:"rgb(242,198,58)",label:null},{min:11,max:12,point:null,color:"rgb(254,148,43)",label:null},{min:12,max:13,point:null,color:"rgb(254,103,35)",label:null},{min:13,max:14,point:null,color:"rgb(253,49,28)",label:null},{min:14,max:null,point:null,color:"rgb(253,7,114)",label:null}]},{id:"5ecb0f04-dbe5-4a3c-b96c-9244d3fda2cd",groupId:"672c72d23fc19a7818f89da3",name:"WINDS",unit:"m/s",maxValue:32,minValue:0,scale:1,gradient:null,remark:"风速",productType:"RADAR",items:[{min:0,max:2,point:null,color:"rgb(92, 246, 255)",label:""},{min:2,max:4,point:null,color:"rgb(30, 225, 255)",label:""},{min:4,max:6,point:null,color:"rgb(81, 169, 255)",label:""},{min:6,max:8,point:null,color:"rgb(30, 137, 254)",label:""},{min:8,max:10,point:null,color:"rgb(156, 207, 49)",label:""},{min:10,max:12,point:null,color:"rgb(0, 176, 88)",label:""},{min:12,max:14,point:null,color:"rgb(45, 139, 87)",label:""},{min:14,max:16,point:null,color:"rgb(19, 101, 193)",label:""},{min:16,max:18,point:null,color:"rgb(0, 57, 156)",label:""},{min:18,max:20,point:null,color:"rgb(255, 191, 107)",label:""},{min:20,max:22,point:null,color:"rgb(255, 225, 50)",label:""},{min:22,max:24,point:null,color:"rgb(255, 121, 4)",label:""},{min:24,max:26,point:null,color:"rgb(255, 0, 0)",label:""},{min:26,max:28,point:null,color:"rgb(186, 38, 31)",label:""},{min:28,max:32,point:null,color:"rgb(140, 94, 233)",label:""},{min:32,max:null,point:null,color:"rgb(252, 2, 228)",label:""}]},{id:"PHIDP",groupId:"672c72d23fc19a7818f89da3",name:"PHIDP",unit:"deg",maxValue:360,minValue:0,scale:null,gradient:null,remark:"差分传播相位",productType:"RADAR",items:[{min:0,max:24,point:null,color:"rgb(0,53,173)",label:null},{min:24,max:48,point:null,color:"rgb(36,239,238)",label:null},{min:48,max:72,point:null,color:"rgb(27,185,189)",label:null},{min:72,max:96,point:null,color:"rgb(20,130,124)",label:null},{min:96,max:120,point:null,color:"rgb(23,135,65)",label:null},{min:120,max:144,point:null,color:"rgb(31,180,61)",label:null},{min:144,max:168,point:null,color:"rgb(37,215,56)",label:null},{min:168,max:192,point:null,color:"rgb(43,253,62)",label:null},{min:192,max:216,point:null,color:"rgb(255,253,87)",label:null},{min:216,max:240,point:null,color:"rgb(255,237,63)",label:null},{min:240,max:264,point:null,color:"rgb(255,195,53)",label:null},{min:264,max:288,point:null,color:"rgb(254,162,46)",label:null},{min:288,max:312,point:null,color:"rgb(254,112,37)",label:null},{min:312,max:336,point:null,color:"rgb(253,32,27)",label:null},{min:336,max:360,point:null,color:"rgb(190,0,19)",label:null},{min:360,max:null,point:null,color:"rgb(209,25,165)",label:null}]},{id:"ccc8654e-8f14-44df-b6bb-c2f1487d7446",groupId:"672c72d23fc19a7818f89da3",name:"OHP",unit:"mm",maxValue:203.2,minValue:0,scale:null,gradient:null,remark:"1小时降水累计",productType:"RADAR",items:[{min:.1,max:2.54,point:null,color:"rgb(170,170,170)",label:null},{min:2.54,max:6.35,point:null,color:"rgb(118,118,118)",label:null},{min:6.35,max:12.7,point:null,color:"rgb(0,255,255)",label:null},{min:12.7,max:19.05,point:null,color:"rgb(0,175,175)",label:null},{min:19.05,max:25.4,point:null,color:"rgb(0,255,0)",label:null},{min:25.4,max:31.75,point:null,color:"rgb(0,143,0)",label:null},{min:31.75,max:38.1,point:null,color:"rgb(255,0,255)",label:null},{min:38.1,max:44.45,point:null,color:"rgb(175,50,125)",label:null},{min:44.45,max:50.8,point:null,color:"rgb(0,0,255)",label:null},{min:50.8,max:63.5,point:null,color:"rgb(50,0,150)",label:null},{min:63.5,max:76.2,point:null,color:"rgb(255,255,0)",label:null},{min:76.2,max:101.6,point:null,color:"rgb(255,170,0)",label:null},{min:101.6,max:152.4,point:null,color:"rgb(255,0,0)",label:null},{min:152.4,max:203.2,point:null,color:"rgb(174,0,0)",label:null},{min:203.2,max:null,point:null,color:"rgb(255,255,255)",label:null}]},{id:"1c0a147d-d7ea-41f3-a6b9-f8fd46da58c8",groupId:"672c72d23fc19a7818f89da3",name:"TI",unit:"m^(2/3)/s",maxValue:9999,minValue:0,scale:1,gradient:null,remark:null,productType:"RADAR",items:[{min:0,max:.1,point:null,color:"rgb(192, 192, 192)",label:null},{min:.1,max:.4,point:null,color:"rgb(0, 255, 255)",label:null},{min:.4,max:.7,point:null,color:"rgb(255, 255, 0)",label:null},{min:.7,max:9999,point:null,color:"rgb(255, 0, 0)",label:null}]},{id:"282816d5-8a1e-405e-9bea-b9e29beac15b",groupId:"672c72d23fc19a7818f89da3",name:"SMP",unit:"mm",maxValue:10,minValue:1,scale:1,gradient:null,remark:"6分钟雨量",productType:"RADAR",items:[{min:0,max:.02,point:null,color:"rgb(205, 244, 206)",label:""},{min:.02,max:.3,point:null,color:"rgb(170, 248, 164)",label:""},{min:.3,max:1.2,point:null,color:"rgb(69, 245, 69)",label:""},{min:1.2,max:2.5,point:null,color:"rgb(111, 181, 251)",label:""},{min:2.5,max:4.5,point:null,color:"rgb(71, 56, 250)",label:""},{min:4.5,max:7,point:null,color:"rgb(198, 61, 247)",label:""},{min:7,max:null,point:null,color:"rgb(167, 56, 133)",label:""}]},{id:"0eb66b4f-c6f0-4a6a-bf65-7640da83b22d",groupId:"672c72d23fc19a7818f89da3",name:"WIND10",unit:"m/s",maxValue:30,minValue:0,scale:1,gradient:null,remark:null,productType:"NWP",items:[{min:0,max:3,point:null,color:"rgb(102, 92, 169)",label:null},{min:3,max:5,point:null,color:"rgb(42, 116, 188)",label:null},{min:5,max:10,point:null,color:"rgb(9, 175, 229)",label:null},{min:10,max:15,point:null,color:"rgb(13, 179, 116)",label:null},{min:15,max:20,point:null,color:"rgb(237, 213, 39)",label:null},{min:20,max:30,point:null,color:"rgb(196, 84, 178)",label:null},{min:30,max:null,point:null,color:"rgb(54, 137, 215)",label:null}]},{id:"3bc78549-b6cb-4a2e-b40e-e43ba8de23b2",groupId:"67821566c7173439a2634e6f",name:"AP1H",unit:"mm",maxValue:200,minValue:0,scale:null,gradient:null,remark:"1小时雨量",productType:"NWP",items:[{min:0,max:.5,point:null,color:"rgb(170,170,170)",label:null},{min:.5,max:1,point:null,color:"rgb(118,118,118)",label:null},{min:1,max:2.5,point:null,color:"rgb(0,255,255)",label:null},{min:2.5,max:5,point:null,color:"rgb(0,175,175)",label:null},{min:5,max:10,point:null,color:"rgb(0,255,0)",label:null},{min:10,max:15,point:null,color:"rgb(0,143,0)",label:null},{min:15,max:20,point:null,color:"rgb(255,0,255)",label:null},{min:20,max:30,point:null,color:"rgb(175,50,125)",label:null},{min:30,max:40,point:null,color:"rgb(0,0,255)",label:null},{min:40,max:50,point:null,color:"rgb(50,0,150)",label:null},{min:50,max:60,point:null,color:"rgb(255,255,0)",label:null},{min:60,max:80,point:null,color:"rgb(255,170,0)",label:null},{min:80,max:100,point:null,color:"rgb(255, 101, 0)",label:null},{min:100,max:150,point:null,color:"rgb(255,0,0)",label:null},{min:150,max:200,point:null,color:"rgb(174,0,0)",label:null},{min:200,max:null,point:null,color:"rgb(255,255,255)",label:null}]},{id:"a3ae18d3-860c-48b8-8db5-51b96ffbad7e",groupId:"67821566c7173439a2634e6f",name:"AP3H",unit:"mm",maxValue:200,minValue:0,scale:null,gradient:null,remark:"3小时雨量",productType:"NWP",items:[{min:0,max:.5,point:null,color:"rgb(170,170,170)",label:null},{min:.5,max:1,point:null,color:"rgb(118,118,118)",label:null},{min:1,max:2.5,point:null,color:"rgb(0,255,255)",label:null},{min:2.5,max:5,point:null,color:"rgb(0,175,175)",label:null},{min:5,max:10,point:null,color:"rgb(0,255,0)",label:null},{min:10,max:15,point:null,color:"rgb(0,143,0)",label:null},{min:15,max:20,point:null,color:"rgb(255,0,255)",label:null},{min:20,max:30,point:null,color:"rgb(175,50,125)",label:null},{min:30,max:40,point:null,color:"rgb(0,0,255)",label:null},{min:40,max:50,point:null,color:"rgb(50,0,150)",label:null},{min:50,max:60,point:null,color:"rgb(255,255,0)",label:null},{min:60,max:80,point:null,color:"rgb(255,170,0)",label:null},{min:80,max:100,point:null,color:"rgb(255, 101, 0)",label:null},{min:100,max:150,point:null,color:"rgb(255,0,0)",label:null},{min:150,max:200,point:null,color:"rgb(174,0,0)",label:null},{min:200,max:null,point:null,color:"rgb(255,255,255)",label:null}]},{id:"5b0944f7-ccfa-415a-b6a7-f6dd2ae50d66",groupId:"67821566c7173439a2634e6f",name:"EC_r_multiple",unit:"%",maxValue:100,minValue:0,scale:1,gradient:null,remark:"相对湿度",productType:"OTHER",items:[{min:0,max:10,point:null,color:"rgb(156, 143, 82)",label:null},{min:10,max:20,point:null,color:"rgb(159, 146, 81)",label:null},{min:20,max:30,point:null,color:"rgb(162, 148, 83)",label:null},{min:30,max:40,point:null,color:"rgb(160, 146, 79)",label:null},{min:40,max:50,point:null,color:"rgb(161, 147, 77)",label:null},{min:50,max:60,point:null,color:"rgb(180, 169, 117)",label:null},{min:60,max:70,point:null,color:"rgb(194, 188, 160)",label:null},{min:70,max:80,point:null,color:"rgb(206, 206, 206)",label:null},{min:80,max:90,point:null,color:"rgb(226, 226, 226)",label:null},{min:90,max:100,point:null,color:"rgb(241, 241, 241)",label:null},{min:100,max:null,point:null,color:"rgb(255, 255, 255)",label:null}]},{id:"50f8f4db-2589-43f2-bac3-c527cb24b9ce",groupId:"67821566c7173439a2634e6f",name:"EC_t2m_single",unit:"℃",maxValue:50,minValue:-40,scale:1,gradient:null,remark:"2米气温",productType:"OTHER",items:[{min:-40,max:-30,point:null,color:"rgb(226, 226, 226)",label:null},{min:-30,max:-20,point:null,color:"rgb(244, 166, 244)",label:null},{min:-20,max:-15,point:null,color:"rgb(144, 25, 144)",label:null},{min:-15,max:-10,point:null,color:"rgb(42, 30, 105)",label:null},{min:-10,max:-5,point:null,color:"rgb(87, 81, 173)",label:null},{min:-5,max:0,point:null,color:"rgb(67, 119, 190)",label:null},{min:0,max:5,point:null,color:"rgb(80, 177, 151)",label:null},{min:5,max:10,point:null,color:"rgb(94, 201, 78)",label:null},{min:10,max:15,point:null,color:"rgb(183, 217, 66)",label:null},{min:15,max:20,point:null,color:"rgb(225, 206, 60)",label:null},{min:20,max:25,point:null,color:"rgb(225, 160, 68)",label:null},{min:25,max:30,point:null,color:"rgb(218, 107, 83)",label:null},{min:30,max:40,point:null,color:"rgb(183, 53, 103)",label:null},{min:40,max:50,point:null,color:"rgb(107, 21, 39)",label:null},{min:50,max:null,point:null,color:"rgb(43, 1, 0)",label:null}]},{id:"6798eada-c2cd-4edc-8ed2-ad76041d6dd4",groupId:"67821566c7173439a2634e6f",name:"EC_t_multiple",unit:"℃",maxValue:50,minValue:-40,scale:1,gradient:null,remark:"气温",productType:"OTHER",items:[{min:-40,max:-30,point:null,color:"rgb(226, 226, 226)",label:null},{min:-30,max:-20,point:null,color:"rgb(244, 166, 244)",label:null},{min:-20,max:-15,point:null,color:"rgb(144, 25, 144)",label:null},{min:-15,max:-10,point:null,color:"rgb(42, 30, 105)",label:null},{min:-10,max:-5,point:null,color:"rgb(87, 81, 173)",label:null},{min:-5,max:0,point:null,color:"rgb(67, 119, 190)",label:null},{min:0,max:5,point:null,color:"rgb(80, 177, 151)",label:null},{min:5,max:10,point:null,color:"rgb(94, 201, 78)",label:null},{min:10,max:15,point:null,color:"rgb(183, 217, 66)",label:null},{min:15,max:20,point:null,color:"rgb(225, 206, 60)",label:null},{min:20,max:25,point:null,color:"rgb(225, 160, 68)",label:null},{min:25,max:30,point:null,color:"rgb(218, 107, 83)",label:null},{min:30,max:40,point:null,color:"rgb(183, 53, 103)",label:null},{min:40,max:50,point:null,color:"rgb(107, 21, 39)",label:null},{min:50,max:null,point:null,color:"rgb(43, 1, 0)",label:null}]},{id:"2f07bb01-aa12-4dcc-a7b8-157a0cc1260b",groupId:"67821566c7173439a2634e6f",name:"EC_wind10_single",unit:"m/s",maxValue:42,minValue:0,scale:1,gradient:null,remark:"10米风",productType:"OTHER",items:[{min:0,max:2,point:null,color:"rgb(88, 82, 112)",label:null},{min:2,max:4,point:null,color:"rgb(84, 89, 171)",label:null},{min:4,max:6,point:null,color:"rgb(68, 133, 187)",label:null},{min:6,max:8,point:null,color:"rgb(79, 168, 143)",label:null},{min:8,max:10,point:null,color:"rgb(79, 191, 73)",label:null},{min:10,max:12,point:null,color:"rgb(141, 201, 77)",label:null},{min:12,max:14,point:null,color:"rgb(203, 215, 69)",label:null},{min:14,max:18,point:null,color:"rgb(215, 189, 65)",label:null},{min:18,max:22,point:null,color:"rgb(214, 155, 70)",label:null},{min:22,max:26,point:null,color:"rgb(212, 119, 76)",label:null},{min:26,max:30,point:null,color:"rgb(199, 70, 110)",label:null},{min:30,max:34,point:null,color:"rgb(165, 56, 92)",label:null},{min:34,max:38,point:null,color:"rgb(144, 30, 80)",label:null},{min:38,max:42,point:null,color:"rgb(99, 27, 28)",label:null},{min:42,max:null,point:null,color:"rgb(43, 1, 0)",label:null}]},{id:"7e1c42df-d806-48b0-8ac7-63e8bc7f952f",groupId:"67821566c7173439a2634e6f",name:"EC_wind_multiple",unit:"m/s",maxValue:42,minValue:0,scale:1,gradient:null,remark:"高层风",productType:"OTHER",items:[{min:0,max:2,point:null,color:"rgb(88, 82, 112)",label:null},{min:2,max:4,point:null,color:"rgb(84, 89, 171)",label:null},{min:4,max:6,point:null,color:"rgb(68, 133, 187)",label:null},{min:6,max:8,point:null,color:"rgb(79, 168, 143)",label:null},{min:8,max:10,point:null,color:"rgb(79, 191, 73)",label:null},{min:10,max:12,point:null,color:"rgb(141, 201, 77)",label:null},{min:12,max:14,point:null,color:"rgb(203, 215, 69)",label:null},{min:14,max:18,point:null,color:"rgb(215, 189, 65)",label:null},{min:18,max:22,point:null,color:"rgb(214, 155, 70)",label:null},{min:22,max:26,point:null,color:"rgb(212, 119, 76)",label:null},{min:26,max:30,point:null,color:"rgb(199, 70, 110)",label:null},{min:30,max:34,point:null,color:"rgb(165, 56, 92)",label:null},{min:34,max:38,point:null,color:"rgb(144, 30, 80)",label:null},{min:38,max:42,point:null,color:"rgb(99, 27, 28)",label:null},{min:42,max:null,point:null,color:"rgb(43, 1, 0)",label:null}]},{id:"b5821ff9-c8ab-499d-8b9c-109e6c8ef390",groupId:"67821566c7173439a2634e6f",name:"EC_q_multiple",unit:"g/kg",maxValue:18,minValue:2,scale:1,gradient:null,remark:"比湿",productType:"OTHER",items:[{min:2,max:4,point:null,color:"rgb(255, 255, 255)",label:null},{min:4,max:6,point:null,color:"rgb(214, 253, 255)",label:null},{min:6,max:8,point:null,color:"rgb(51, 255, 240)",label:null},{min:8,max:10,point:null,color:"rgb(51, 196, 255)",label:null},{min:10,max:12,point:null,color:"rgb(51, 125, 255)",label:null},{min:12,max:14,point:null,color:"rgb(150, 227, 68)",label:null},{min:14,max:16,point:null,color:"rgb(207, 253, 169)",label:null},{min:16,max:18,point:null,color:"rgb(248, 242, 61)",label:null},{min:18,max:null,point:null,color:"rgb(255, 156, 49)",label:null}]},{id:"5a86d025-9c56-4abc-8e06-48aa89c81e8e",groupId:"67821566c7173439a2634e6f",name:"EC_z_multiple",unit:"m",maxValue:35,minValue:-40,scale:1,gradient:null,remark:"位势",productType:"OTHER",items:[{min:-40,max:-35,point:null,color:"rgb(113, 62, 131)",label:null},{min:-35,max:-28,point:null,color:"rgb(139, 78, 158)",label:null},{min:-28,max:-26,point:null,color:"rgb(158, 82, 183)",label:null},{min:-26,max:-24,point:null,color:"rgb(192, 156, 204)",label:null},{min:-24,max:-22,point:null,color:"rgb(215, 189, 226)",label:null},{min:-22,max:-20,point:null,color:"rgb(234, 223, 237)",label:null},{min:-20,max:-18,point:null,color:"rgb(27, 76, 116)",label:null},{min:-18,max:-16,point:null,color:"rgb(30, 98, 137)",label:null},{min:-16,max:-14,point:null,color:"rgb(41, 115, 160)",label:null},{min:-14,max:-12,point:null,color:"rgb(47, 156, 210)",label:null},{min:-12,max:-10,point:null,color:"rgb(94, 172, 221)",label:null},{min:-10,max:-8,point:null,color:"rgb(135, 193, 231)",label:null},{min:-8,max:-6,point:null,color:"rgb(178, 212, 237)",label:null},{min:-6,max:-4,point:null,color:"rgb(211, 233, 248)",label:null},{min:-4,max:-2,point:null,color:"rgb(237, 244, 250)",label:null},{min:-2,max:0,point:null,color:"rgb(255, 255, 255)",label:null},{min:0,max:2,point:null,color:"rgb(254, 254, 0)",label:null},{min:2,max:4,point:null,color:"rgb(254, 225, 0)",label:null},{min:4,max:6,point:null,color:"rgb(254, 211, 0)",label:null},{min:6,max:8,point:null,color:"rgb(254, 200, 0)",label:null},{min:8,max:10,point:null,color:"rgb(246, 191, 67)",label:null},{min:10,max:12,point:null,color:"rgb(254, 175, 0)",label:null},{min:12,max:14,point:null,color:"rgb(254, 150, 0)",label:null},{min:14,max:16,point:null,color:"rgb(252, 190, 185)",label:null},{min:16,max:18,point:null,color:"rgb(255, 163, 146)",label:null},{min:18,max:20,point:null,color:"rgb(255, 132, 117)",label:null},{min:20,max:22,point:null,color:"rgb(238, 72, 64)",label:null},{min:22,max:24,point:null,color:"rgb(255, 193, 232)",label:null},{min:24,max:26,point:null,color:"rgb(249, 164, 255)",label:null},{min:26,max:28,point:null,color:"rgb(255, 109, 255)",label:null},{min:28,max:30,point:null,color:"rgb(255, 73, 255)",label:null},{min:30,max:35,point:null,color:"rgb(227, 0, 232)",label:null},{min:35,max:null,point:null,color:"rgb(207, 11, 199)",label:null}]},{id:"3bd89366-ac87-4638-a2a8-58cdf0a9ad78",groupId:"67821566c7173439a2634e6f",name:"EC_msl_single",unit:"hPa",maxValue:1054,minValue:940,scale:1,gradient:null,remark:"海平面气压",productType:"OTHER",items:[{min:940,max:948,point:null,color:"rgb(238, 238, 238)",label:null},{min:948,max:956,point:null,color:"rgb(255, 51, 255)",label:null},{min:956,max:964,point:null,color:"rgb(157, 29, 156)",label:null},{min:964,max:973,point:null,color:"rgb(38, 29, 101)",label:null},{min:973,max:981,point:null,color:"rgb(87, 80, 162)",label:null},{min:981,max:989,point:null,color:"rgb(67, 119, 183)",label:null},{min:989,max:997,point:null,color:"rgb(79, 171, 129)",label:null},{min:997,max:1005,point:null,color:"rgb(110, 193, 86)",label:null},{min:1005,max:1013,point:null,color:"rgb(194, 194, 68)",label:null},{min:1013,max:1021,point:null,color:"rgb(214, 183, 64)",label:null},{min:1021,max:1030,point:null,color:"rgb(213, 134, 74)",label:null},{min:1030,max:1038,point:null,color:"rgb(201, 74, 110)",label:null},{min:1038,max:1046,point:null,color:"rgb(156, 46, 90)",label:null},{min:1046,max:1054,point:null,color:"rgb(109, 26, 48)",label:null},{min:1054,max:null,point:null,color:"rgb(47, 6, 7)",label:null}]},{id:"c4085783-16aa-48fc-93c1-dfd445fd9bf9",groupId:"67821566c7173439a2634e6f",name:"EC_d_multiple",unit:"10^-5/s",maxValue:53.3,minValue:-36.1,scale:1,gradient:null,remark:"散度",productType:"OTHER",items:[{min:-36.1,max:-18.2,point:null,color:"rgb(10, 23, 219)",label:null},{min:-18.2,max:-.3,point:null,color:"rgb(93, 178, 255)",label:null},{min:-.3,max:17.5,point:null,color:"rgb(166, 243, 255)",label:null},{min:17.5,max:35.4,point:null,color:"rgb(255, 220, 5)",label:null},{min:35.4,max:53.3,point:null,color:"rgb(238, 72, 64)",label:null},{min:53.3,max:null,point:null,color:"rgb(128, 0, 0)",label:null}]},{id:"cdc5ce80-805b-452e-bb59-bc27ae166ede",groupId:"67821566c7173439a2634e6f",name:"EC_d2m_single",unit:"℃",maxValue:40,minValue:-20,scale:1,gradient:null,remark:"2米露点温度",productType:"OTHER",items:[{min:-40,max:-30,point:null,color:"rgb(144, 25, 144)",label:null},{min:-30,max:-20,point:null,color:"rgb(148, 136, 210)",label:null},{min:-20,max:-10,point:null,color:"rgb(159, 227, 221)",label:null},{min:-10,max:0,point:null,color:"rgb(115, 200, 192)",label:null},{min:0,max:10,point:null,color:"rgb(92, 139, 185)",label:null},{min:10,max:20,point:null,color:"rgb(94, 139, 50)",label:null},{min:20,max:30,point:null,color:"rgb(225, 160, 68)",label:null},{min:30,max:40,point:null,color:"rgb(218, 107, 83)",label:null},{min:40,max:null,point:null,color:"rgb(107, 21, 39)",label:null}]},{id:"47f5582b-2aaf-4d80-877f-1d8a20a20560",groupId:"67821566c7173439a2634e6f",name:"IC",unit:null,maxValue:3,minValue:1,scale:1,gradient:null,remark:"积冰指数",productType:"RADAR",items:[{min:1,max:2,point:null,color:"rgb(173, 216, 230)",label:"轻度"},{min:2,max:3,point:null,color:"rgb(255, 255, 0)",label:"中度"},{min:3,max:null,point:null,color:"rgb(255, 0, 0)",label:"严重"}]},{id:"3bb41af2-d24f-4526-af55-e8cb4f6417c7",groupId:"67821566c7173439a2634e6f",name:"EC_lcc_single",unit:"oktas",maxValue:8,minValue:0,scale:1,gradient:null,remark:"低云量",productType:"OTHER",items:[{min:0,max:1,point:null,color:"rgb(211, 211, 211)",label:null},{min:1,max:2,point:null,color:"rgb(185, 185, 186)",label:null},{min:2,max:3,point:null,color:"rgb(163, 172, 183)",label:null},{min:3,max:4,point:null,color:"rgb(136, 154, 175)",label:null},{min:4,max:5,point:null,color:"rgb(135, 149, 164)",label:null},{min:5,max:6,point:null,color:"rgb(133, 143, 153)",label:null},{min:6,max:7,point:null,color:"rgb(130, 135, 140)",label:null},{min:7,max:8,point:null,color:"rgb(129, 130, 128)",label:null},{min:8,max:null,point:null,color:"rgb(128, 124, 114)",label:null}]},{id:"a350c2f9-7c44-43ca-b41d-114b63effc9b",groupId:"67821566c7173439a2634e6f",name:"ZDR",unit:"dB",maxValue:5,minValue:-4,scale:null,gradient:null,remark:"差分反射率因子",productType:"RADAR",items:[{min:-4,max:-3,point:null,color:"rgb(72,72,72)",label:null},{min:-3,max:-2,point:null,color:"rgb(110,110,110)",label:null},{min:-2,max:-1,point:null,color:"rgb(149,149,149)",label:null},{min:-1,max:0,point:null,color:"rgb(199,199,199)",label:null},{min:0,max:.2,point:null,color:"rgb(219,239,220)",label:null},{min:.2,max:.5,point:null,color:"rgb(32,189,61)",label:null},{min:.5,max:.8,point:null,color:"rgb(39,230,59)",label:null},{min:.8,max:1,point:null,color:"rgb(57,253,72)",label:null},{min:1,max:1.5,point:null,color:"rgb(255,253,73)",label:null},{min:1.5,max:2,point:null,color:"rgb(255,227,60)",label:null},{min:2,max:2.5,point:null,color:"rgb(254,185,51)",label:null},{min:2.5,max:3,point:null,color:"rgb(254,149,44)",label:null},{min:3,max:3.5,point:null,color:"rgb(253,92,33)",label:null},{min:3.5,max:4,point:null,color:"rgb(240,15,25)",label:null},{min:4,max:5,point:null,color:"rgb(184,0,61)",label:null},{min:5,max:null,point:null,color:"rgb(253,40,250)",label:null}]},{id:"b4fa5f0b-601c-4533-a571-59bbc64b6190",groupId:"67821566c7173439a2634e6f",name:"VBLUR",unit:"m/s",maxValue:64,minValue:-64,scale:null,gradient:null,remark:"径向速度扩展",productType:"RADAR",items:[{min:-64,max:-62,point:null,color:"rgb(202,253,123)",label:null},{min:-62,max:-57,point:null,color:"rgb(162,202,100)",label:null},{min:-57,max:-52,point:null,color:"rgb(106,137,50)",label:null},{min:-52,max:-47,point:null,color:"rgb(79,96,49)",label:null},{min:-47,max:-42,point:null,color:"rgb(96,157,158)",label:null},{min:-42,max:-37,point:null,color:"rgb(175,195,220)",label:null},{min:-37,max:-32,point:null,color:"rgb(164,238,253)",label:null},{min:-32,max:-27,point:null,color:"rgb(47,224,251)",label:null},{min:-27,max:-20,point:null,color:"rgb(0,134,245)",label:null},{min:-20,max:-15,point:null,color:"rgb(54,38,140)",label:null},{min:-15,max:-10,point:null,color:"rgb(59,249,154)",label:null},{min:-10,max:-5,point:null,color:"rgb(44,183,145)",label:null},{min:-5,max:-1,point:null,color:"rgb(37,139,50)",label:null},{min:-1,max:0,point:null,color:"rgb(203,188,160)",label:null},{min:0,max:1,point:null,color:"rgb(255,255,255)",label:null},{min:1,max:5,point:null,color:"rgb(246,129,57)",label:null},{min:5,max:10,point:null,color:"rgb(255,201,76)",label:null},{min:10,max:15,point:null,color:"rgb(255,251,91)",label:null},{min:15,max:20,point:null,color:"rgb(168,0,28)",label:null},{min:20,max:27,point:null,color:"rgb(204,108,48)",label:null},{min:27,max:32,point:null,color:"rgb(251,0,39)",label:null},{min:32,max:37,point:null,color:"rgb(253,190,201)",label:null},{min:37,max:42,point:null,color:"rgb(253,105,108)",label:null},{min:42,max:47,point:null,color:"rgb(147,64,65)",label:null},{min:47,max:52,point:null,color:"rgb(215,114,210)",label:null},{min:52,max:57,point:null,color:"rgb(253,40,250)",label:null},{min:57,max:62,point:null,color:"rgb(182,71,241)",label:null},{min:62,max:64,point:null,color:"rgb(113,47,149)",label:null},{min:64,max:null,point:null,color:"rgb(137,22,135)",label:null}]},{id:"71bd683e-b279-4315-8258-7d00e47204da",groupId:"68541156820de978f2963673",name:"CFS",unit:"dBZ",maxValue:75,minValue:5,scale:null,gradient:null,remark:"组合反射率",productType:"RADAR",items:[{min:5,max:10,point:null,color:"rgb(35,236,235)",label:null},{min:10,max:15,point:null,color:"rgb(19,160,220)",label:null},{min:15,max:20,point:null,color:"rgb(0,41,240)",label:null},{min:20,max:25,point:null,color:"rgb(43,252,62)",label:null},{min:25,max:30,point:null,color:"rgb(34,197,49)",label:null},{min:30,max:35,point:null,color:"rgb(24,142,35)",label:null},{min:35,max:40,point:null,color:"rgb(255,252,66)",label:null},{min:40,max:45,point:null,color:"rgb(229,189,51)",label:null},{min:45,max:50,point:null,color:"rgb(253,141,42)",label:null},{min:50,max:55,point:null,color:"rgb(252,0,25)",label:null},{min:55,max:60,point:null,color:"rgb(163,0,17)",label:null},{min:60,max:65,point:null,color:"rgb(99,0,10)",label:null},{min:65,max:70,point:null,color:"rgb(252,40,249)",label:null},{min:70,max:75,point:null,color:"rgb(149,89,195)",label:null},{min:75,max:null,point:null,color:"rgb(255,255,255)",label:null}]},{id:"ff63f0ee-d094-478a-a75c-a4394fd48c86",groupId:"68541156820de978f2963673",name:"MEHS",unit:"mm",maxValue:75,minValue:1,scale:1,gradient:null,remark:null,productType:"RADAR",items:[{min:.1,max:1,point:null,color:"rgb(7, 47, 107)",label:""},{min:1,max:2,point:null,color:"rgb(8, 87, 156)",label:""},{min:2,max:6,point:null,color:"rgb(90, 160, 205)",label:""},{min:6,max:10,point:null,color:"rgb(219, 245, 255)",label:""},{min:10,max:15,point:null,color:"rgb(248, 223, 187)",label:""},{min:15,max:20,point:null,color:"rgb(249, 175, 113)",label:""},{min:20,max:30,point:null,color:"rgb(242, 118, 18)",label:""},{min:30,max:40,point:null,color:"rgb(181, 106, 46)",label:""},{min:40,max:50,point:null,color:"rgb(202, 21, 27)",label:""},{min:50,max:null,point:null,color:"rgb(95, 0, 0)",label:""}]},{id:"917c9011-ece1-4a01-aa57-2e5328a01106",groupId:"68541156820de978f2963673",name:"AP10M",unit:"mm",maxValue:10,minValue:1,scale:1,gradient:null,remark:"10分钟雨量",productType:"NWP",items:[{min:0,max:.02,point:null,color:"rgb(205, 244, 206)",label:""},{min:.02,max:.3,point:null,color:"rgb(170, 248, 164)",label:""},{min:.3,max:1.2,point:null,color:"rgb(69, 245, 69)",label:""},{min:1.2,max:2.5,point:null,color:"rgb(111, 181, 251)",label:""},{min:2.5,max:4.5,point:null,color:"rgb(71, 56, 250)",label:""},{min:4.5,max:7,point:null,color:"rgb(198, 61, 247)",label:""},{min:7,max:null,point:null,color:"rgb(167, 56, 133)",label:""}]},{id:"8bb1a6a4-2d0a-407e-8763-b68341179ae0",groupId:"68541156820de978f2963673",name:"LYOHP",unit:"mm",maxValue:400,minValue:0,scale:null,gradient:null,remark:null,productType:null,items:[{min:.1,max:10,point:null,color:"rgb(165, 241, 141)",label:null},{min:10,max:25,point:null,color:"rgb(0, 124, 0)",label:null},{min:25,max:50,point:null,color:"rgb(61, 187, 249)",label:null},{min:50,max:100,point:null,color:"rgb(0, 0, 249)",label:null},{min:100,max:250,point:null,color:"rgb(249, 61, 249)",label:null},{min:250,max:400,point:null,color:"rgb(124, 0, 0)",label:null},{min:400,max:null,point:null,color:"rgb(249, 0, 0)",label:null}]},{id:"1a5064b5-6d9b-462f-8239-d1fe9cd5d992",groupId:"68541156820de978f2963673",name:"LYDHP",unit:"mm",maxValue:400,minValue:0,scale:null,gradient:null,remark:null,productType:null,items:[{min:.1,max:10,point:null,color:"rgb(165, 241, 141)",label:null},{min:10,max:25,point:null,color:"rgb(0, 124, 0)",label:null},{min:25,max:50,point:null,color:"rgb(61, 187, 249)",label:null},{min:50,max:100,point:null,color:"rgb(0, 0, 249)",label:null},{min:100,max:250,point:null,color:"rgb(249, 61, 249)",label:null},{min:250,max:400,point:null,color:"rgb(124, 0, 0)",label:null},{min:400,max:null,point:null,color:"rgb(249, 0, 0)",label:null}]},{id:"cc63517e-e9ef-42fa-ade2-02f80c03387a",groupId:"68541156820de978f2963673",name:"LYTHP",unit:"mm",maxValue:400,minValue:0,scale:null,gradient:null,remark:null,productType:null,items:[{min:.1,max:10,point:null,color:"rgb(165, 241, 141)",label:null},{min:10,max:25,point:null,color:"rgb(0, 124, 0)",label:null},{min:25,max:50,point:null,color:"rgb(61, 187, 249)",label:null},{min:50,max:100,point:null,color:"rgb(0, 0, 249)",label:null},{min:100,max:250,point:null,color:"rgb(249, 61, 249)",label:null},{min:250,max:400,point:null,color:"rgb(124, 0, 0)",label:null},{min:400,max:null,point:null,color:"rgb(249, 0, 0)",label:null}]}]};let dn=null;function Gt(){return dn===null&&(dn=jt),dn}async function Ln(e){const l=await Gt();if(!l)return null;const n=e.toUpperCase();return l.item.find(t=>t.name.toUpperCase()===n)??null}function _l(e){const l=e.match(/rgb\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/);return l?[parseInt(l[1],10),parseInt(l[2],10),parseInt(l[3],10)]:[128,128,128]}function Wt(e){const l=e.items;return n=>{if(l.length===0)return[128,128,128,255];if(n<l[0].min){const[d,f,b]=_l(l[0].color);return[d,f,b,255]}let t=l.length-1;for(let d=0;d<l.length;d++){const f=l[d],b=f.max===null||n<f.max;if(n>=f.min&&b){t=d;break}}if(!e.gradient){const[d,f,b]=_l(l[t].color);return[d,f,b,255]}const o=Math.min(t+1,l.length-1);if(o===t){const[d,f,b]=_l(l[t].color);return[d,f,b,255]}const i=l[t].min,r=l[o].min,a=r===i?0:(n-i)/(r-i),[u,s,c]=_l(l[t].color),[m,g,p]=_l(l[o].color);return[Math.round(u+a*(m-u)),Math.round(s+a*(g-s)),Math.round(c+a*(p-c)),255]}}const zt=(e,l)=>{const n=I.reactive({colorbarCanvas:e.colorbarCanvas,dataStats:null,variableName:"",colormap:"",colorsJsonItem:null});return n.dataStats=e.dataStats||null,n.variableName=e.variableName||"",n.colormap=e.colormap||"",n.colorsJsonItem=e.ColorsJsonItem||null,Xt(n,l.colormapChange)},Xt=(e,l)=>{const n=I.computed(()=>!!e.colorsJsonItem),t="viridis",o=I.ref(e.colormap||t),i=e.colorbarCanvas,r=I.computed(()=>e.colorsJsonItem?e.colorsJsonItem.minValue.toFixed(2):e.dataStats&&e.dataStats.min!==null&&e.dataStats.min!==void 0?e.dataStats.min.toFixed(2):"N/A"),a=I.computed(()=>e.colorsJsonItem?e.colorsJsonItem.maxValue.toFixed(2):e.dataStats&&e.dataStats.max!==null&&e.dataStats.max!==void 0?e.dataStats.max.toFixed(2):"N/A"),u=I.computed(()=>e.colorsJsonItem?((e.colorsJsonItem.minValue+e.colorsJsonItem.maxValue)/2).toFixed(2):e.dataStats&&e.dataStats.min!==null&&e.dataStats.max!==null?((e.dataStats.min+e.dataStats.max)/2).toFixed(2):"N/A"),s=I.computed(()=>e.colorsJsonItem?(e.colorsJsonItem.maxValue-e.colorsJsonItem.minValue).toFixed(2):e.dataStats&&e.dataStats.min!==null&&e.dataStats.max!==null?(e.dataStats.max-e.dataStats.min).toFixed(2):"N/A"),c=I.computed(()=>{const g=An(o.value),p=[];for(let d=0;d<=10;d++){const f=d/10,[b,x,h]=g(f);p.push(`rgb(${b}, ${x}, ${h}) ${f*100}%`)}return{background:`linear-gradient(to right, ${p.join(", ")})`}});I.watch(o,g=>{l(g)},{immediate:!0}),I.watch(()=>e.colormap,g=>{o.value=g??t},{immediate:!0}),I.watch(()=>e.colorsJsonItem,()=>{m()},{immediate:!0});function m(){if(!i.value)return;const g=i.value.getContext("2d");if(n.value&&e.colorsJsonItem){const p=e.colorsJsonItem,d=i.value.width,f=i.value.height;g.clearRect(0,0,d,f);const b=p.minValue,x=p.maxValue,h=x-b||1;for(let y=0;y<p.items.length;y++){const R=p.items[y],_=p.items[y+1],E=Math.max(R.min,b),M=R.max!==null?Math.min(R.max,x):_?_.min:x,v=Math.round((E-b)/h*d),C=Math.max(1,Math.round((M-E)/h*d)),[S,A,T]=_l(R.color);g.fillStyle=`rgb(${S},${A},${T})`,g.fillRect(v,0,C,f)}}else{const p=kt(200,20,An(o.value),!1);g.clearRect(0,0,i.value.width,i.value.height),g.drawImage(p,0,0)}}return{minValue:r,midValue:u,maxValue:a,valueRange:s,selectedColormap:o,variableName:I.computed(()=>e.variableName),dataStats:e.dataStats,isJsonColormap:n,gradientStyle:c,updateColorbar:m}},Q={NETCDF_LOAD:"netcdf_load",NETCDF_PARSE:"netcdf_parse",MAP_INIT:"map_init",DATA_RENDER:"data_render",FILE_READ:"file_read",VALIDATION:"validation",PERFORMANCE:"performance",NETWORK:"network"},Z={CRITICAL:"critical",ERROR:"error",WARNING:"warning",INFO:"info"};class il extends Error{constructor(n,t,o=Z.ERROR,i=null){super(t);L(this,"name","AppError");L(this,"type");L(this,"severity");L(this,"originalError");L(this,"timestamp");L(this,"context");this.type=n,this.severity=o,this.originalError=i,this.timestamp=new Date().toISOString();const r=Error.captureStackTrace;r&&r(this,il)}toJSON(){return{name:this.name,type:this.type,severity:this.severity,message:this.message,timestamp:this.timestamp,stack:this.stack,originalError:this.originalError?this.originalError.toString():null}}toString(){return`[${this.severity.toUpperCase()}] ${this.type}: ${this.message}`}}class Zt{constructor(l={}){L(this,"options");L(this,"errors",[]);L(this,"listeners",new Set);this.options={logToConsole:!0,showUserNotifications:!0,maxErrors:100,...l}}handle(l,n={}){let t;return l instanceof il?t=l:l instanceof Error?t=new il(Q.VALIDATION,l.message,Z.ERROR,l):t=new il(Q.VALIDATION,String(l),Z.ERROR),t.context=n,this.options.logToConsole&&this.logToConsole(t),this.errors.push(t),this.errors.length>this.options.maxErrors&&this.errors.shift(),this.notifyListeners(t),this.options.showUserNotifications&&t.severity!==Z.INFO&&this.showUserNotification(t),t}logToConsole(l){const n=l.toString(),t=l.toJSON();switch(l.severity){case Z.CRITICAL:console.error("🔴 CRITICAL:",n,t);break;case Z.ERROR:console.error("❌ ERROR:",n,t);break;case Z.WARNING:console.warn("⚠️ WARNING:",n,t);break;case Z.INFO:console.info("ℹ️ INFO:",n,t);break;default:console.log("📝 LOG:",n,t)}}showUserNotification(l){const n={id:Date.now(),type:l.severity,title:this.getNotificationTitle(l),message:l.message,duration:this.getNotificationDuration(l)};console.log("User notification:",n),typeof window<"u"&&window.dispatchEvent(new CustomEvent("app-error",{detail:n}))}getNotificationTitle(l){switch(l.type){case Q.NETCDF_LOAD:return"文件加载错误";case Q.NETCDF_PARSE:return"数据解析错误";case Q.MAP_INIT:return"地图错误";case Q.DATA_RENDER:return"显示错误";case Q.FILE_READ:return"文件错误";default:return"应用错误"}}getNotificationDuration(l){switch(l.severity){case Z.CRITICAL:return 1e4;case Z.ERROR:return 5e3;case Z.WARNING:return 3e3;default:return 2e3}}addListener(l){this.listeners.add(l)}removeListener(l){this.listeners.delete(l)}notifyListeners(l){for(const n of this.listeners)try{n(l)}catch(t){console.error("错误监听器中出错:",t)}}getRecentErrors(l=10){return this.errors.slice(-l)}clearErrors(){this.errors=[]}getStats(){const l={total:this.errors.length,byType:{},bySeverity:{},lastError:this.errors.length>0?this.errors[this.errors.length-1]:null};for(const n of this.errors)l.byType[n.type]=(l.byType[n.type]??0)+1,l.bySeverity[n.severity]=(l.bySeverity[n.severity]??0)+1;return l}}class te{static validateNetCDFFile(l){const n=[];if(!l)return n.push("No file provided"),n;const t=[".nc",".nc4",".netcdf","application/x-netcdf"],o=l.name.toLowerCase().slice(l.name.lastIndexOf(".")),i=l.type.toLowerCase();t.some(a=>o.includes(a)||i.includes(a))||n.push(`Invalid file type: ${l.name}. Expected netCDF file (.nc, .nc4)`);const r=100*1024*1024;return l.size>r&&n.push(`File too large: ${(l.size/(1024*1024)).toFixed(2)}MB. Maximum size is 100MB`),l.size===0&&n.push("File is empty"),n}static validateNetCDFMetadata(l){var t;const n=[];if(!l)return n.push("No metadata available"),n;for(const o of["lon","lat"])(t=l.dimensions)!=null&&t[o]||n.push(`Missing required dimension: ${o}`);if(l.variables){const o=new Set(["lon","lat","longitude","latitude","x","y"]);Object.entries(l.variables).some(([r,a])=>(a.dimensions??[]).length===2&&!o.has(r.toLowerCase()))||n.push("No 2D displayable variable found in file")}if(l.dimensions)for(const[o,i]of Object.entries(l.dimensions))i.size<=0&&n.push(`Invalid dimension size for ${o}: ${i.size}`);return n}static validateDataArray(l,n){const t=[];if(!l)return t.push("No data provided"),t;if(!Array.isArray(l)&&!ArrayBuffer.isView(l))return t.push("Data must be an array or typed array"),t;n!==void 0&&l.length!==n&&t.push(`Data size mismatch: expected ${n}, got ${l.length}`);let o=0,i=0;const r=Math.min(1e3,l.length);for(let a=0;a<r;a++){const u=l[a];typeof u=="number"&&(isNaN(u)&&o++,isFinite(u)||i++)}return o>0&&t.push(`Found ${o} NaN values in sample`),i>0&&t.push(`Found ${i} infinite values in sample`),t}static validateCoordinates(l,n){const t=[];return typeof l!="number"||typeof n!="number"?(t.push("Coordinates must be numbers"),t):((l<-90||l>90)&&t.push(`Latitude out of range: ${l}. Must be between -90 and 90`),(n<-180||n>180)&&t.push(`Longitude out of range: ${n}. Must be between -180 and 180`),t)}}async function Ht(e,l=3,n=1e3){let t;for(let o=0;o<=l;o++)try{return await e()}catch(i){if(t=i,o===l)break;const r=n*Math.pow(2,o)+Math.random()*1e3;console.log(`Retry attempt ${o+1}/${l} after ${r.toFixed(0)}ms`),await new Promise(a=>setTimeout(a,r))}throw t}let pn=null;function je(){return pn||(pn=new Zt({logToConsole:!0,showUserNotifications:!0,maxErrors:100})),pn}function Ul(e){if(e==null)return null;if(typeof e=="number")return e;if(Array.isArray(e)&&e.length>0)return e[0];if(typeof e=="object"){const l=Object.values(e);if(l.length>0&&typeof l[0]=="number")return l[0]}return null}function Ut(e,l){const n=Ul(l.scale_factor),t=Ul(l.add_offset),o=Ul(l._FillValue)??Ul(l.missing_value),i=l._Unsigned,r=typeof i=="string"&&i==="true"||Array.isArray(i)&&i[0]==="true",a=n!==null||t!==null,u=n??1,s=t??0,c=new Float32Array(e.length);for(let m=0;m<e.length;m++){let g=e[m];if(r&&g<0&&(g+=256),o!==null&&g===o){c[m]=NaN;continue}c[m]=a?u*g+s:g}return c}function Bt(e,l=null,n=null){if(!e||e.length===0)return new Float32Array(0);let t=l,o=n;if(t===null||o===null){let a=1/0,u=-1/0;for(let s=0;s<e.length;s++){const c=e[s];c!=null&&!isNaN(c)&&(a=Math.min(a,c),u=Math.max(u,c))}t=a===1/0?0:a,o=u===-1/0?1:u}if(t===o){const a=new Float32Array(e.length);for(let u=0;u<e.length;u++)a[u]=isNaN(e[u])?NaN:.5;return a}const i=new Float32Array(e.length),r=o-t;for(let a=0;a<e.length;a++){const u=e[a];u==null||isNaN(u)?i[a]=NaN:i[a]=(u-t)/r}return i}function $t(e,l){const n=new Uint8ClampedArray(e.length*4);for(let t=0;t<e.length;t++){const o=e[t],i=t*4;if(isNaN(o))n[i]=0,n[i+1]=0,n[i+2]=0,n[i+3]=0;else{const[r,a,u,s=255]=l(o);n[i]=r,n[i+1]=a,n[i+2]=u,n[i+3]=s}}return n}function Yt(e,l){const n=new Uint8ClampedArray(e.length*4);for(let t=0;t<e.length;t++){const o=e[t],i=t*4;if(isNaN(o))n[i]=0,n[i+1]=0,n[i+2]=0,n[i+3]=0;else{const[r,a,u,s=255]=l(o);n[i]=r,n[i+1]=a,n[i+2]=u,n[i+3]=s}}return n}function Kt(e,l,n){const[t,o]=l,[i,r]=n;if(e.length!==t*o)throw new Error(`Data length (${e.length}) doesn't match original shape ${t}x${o}`);const a=new Float32Array(i*r),u=o/r,s=t/i;for(let c=0;c<i;c++)for(let m=0;m<r;m++){const g=Math.floor(m*u),p=Math.floor(c*s);a[c*r+m]=e[p*o+g]}return a}const Ge=new Set(["lon","lat","longitude","latitude","x","y"]);function qt(e,l){return Ge.has(e.toLowerCase())?!0:(l.units??[]).some(t=>t==="degrees_east"||t==="degrees_north")}function oe(e,l){let n=0,t=Math.abs(e[0]-l);for(let o=1;o<e.length;o++){const i=Math.abs(e[o]-l);i<t&&(t=i,n=o)}return n}function Fn(e){return Object.entries(e).filter(([l,n])=>(n.dimensions??[]).length===2&&!Ge.has(l.toLowerCase())).map(([l])=>l)}function Jt(){const e=je(),l=I.ref(!1),n=I.ref(null),t=I.ref(null),o=I.reactive({dimensions:{},variables:{},attributes:{},fileInfo:null}),i=I.reactive({}),r=I.reactive({});async function a(b){l.value=!0,n.value=null;try{console.log("Loading netCDF file:",b.name,b.size);const{NetCDF4:x}=await import("@earthyscience/netcdf4-wasm");t.value=await Ht(()=>x.fromBlobLazy(b,{locateFile:M=>M.endsWith(".wasm")?"/wasm/netcdf4-wasm.wasm":M}),2,1e3),console.log("Dataset loaded:",t.value);const h=await t.value.getCompleteHierarchy();console.log("Dataset hierarchy:",h),await t.value.load();const y=t.value.dimensions,R={};for(const[M,v]of Object.entries(y))R[M]={name:M,size:v.size};o.dimensions=R;const _=t.value.variables,E={};for(const[M,v]of Object.entries(_)){const C=v.dimensions??[],S=C.map(A=>{var T;return((T=R[A])==null?void 0:T.size)??0});E[M]={name:M,dimensions:C,shape:S,dtype:v.datatype,type:v.datatype}}return o.variables=E,o.attributes=h.attributes??{},o.fileInfo={filename:b.name,size:b.size,format:t.value.file_format,dimensionsCount:Object.keys(o.dimensions).length,variablesCount:Object.keys(o.variables).length},o.dimensions.lon&&console.log("Lon dimension:",o.dimensions.lon),o.dimensions.lat&&console.log("Lat dimension:",o.dimensions.lat),await u(),s(),await c(h),{dataset:t.value,metadata:o,variableData:i,dataStats:r,success:!0}}catch(x){const h=x instanceof Error?x.message:String(x);return console.error("Error loading netCDF file:",x),n.value=h,e.handle(new il(Q.NETCDF_LOAD,h,Z.ERROR,x instanceof Error?x:null),{fileName:b==null?void 0:b.name,fileSize:b==null?void 0:b.size}),{success:!1,error:n.value}}finally{l.value=!1}}async function u(){var b;if(t.value)try{for(const x of Object.keys(i))delete i[x];for(const[x,h]of Object.entries(o.variables))try{const y=await t.value.getVariableArray(x),R=((b=t.value.variables[x])==null?void 0:b._attributes)??{},_=Ut(y,R);i[x]={data:_,shape:h.shape,dimensions:h.dimensions,type:h.type??h.dtype??"unknown"},console.log(`Extracted ${x}:`,{length:_.length,shape:h.shape,sample:Array.from(_.slice(0,5))})}catch(y){const R=y instanceof Error?y.message:String(y);console.warn(`Could not extract data for variable ${x}:`,y),i[x]={error:R,shape:h.shape,dimensions:h.dimensions}}}catch(x){console.error("Error extracting variable data:",x)}}function s(){for(const b of Object.keys(i)){const x=i[b];if(x.error||!x.data){r[b]={error:x.error??"No data available",min:null,max:null,mean:null,count:0,validCount:0,missingCount:0};continue}const h=x.data;let y=1/0,R=-1/0,_=0,E=0;for(let v=0;v<h.length;v++){const C=h[v];C!=null&&!isNaN(C)&&(y=Math.min(y,C),R=Math.max(R,C),_+=C,E++)}const M=E>0?_/E:null;r[b]={min:isFinite(y)?y:null,max:isFinite(R)?R:null,mean:M,std:null,count:h.length,validCount:E,missingCount:h.length-E},console.log(`Stats for ${b}:`,r[b])}}async function c(b){var h,y,R;if(!t.value)return;const x=b.dimensions??{};for(const[_,E]of Object.entries(x))if(qt(_,E)&&!((h=i[_])!=null&&h.data))try{const M=await t.value.getVariableArray(_),v=M.length;i[_]={data:M,shape:[v],dimensions:[_],type:"f4"},console.log(`Loaded coordinate array '${_}': n=${v}, first=${(y=M[0])==null?void 0:y.toFixed(4)}, last=${(R=M[v-1])==null?void 0:R.toFixed(4)}`)}catch(M){console.warn(`Could not load coordinate array for dimension '${_}':`,String(M))}}async function m(b,x="/"){if(!t.value)throw new Error("No dataset loaded");try{return await t.value.getVariableArray(b,x)}catch(h){throw console.error(`Error getting variable ${b}:`,h),h}}async function g(b,x,h,y="/"){if(!t.value)throw new Error("No dataset loaded");try{return await t.value.getSlicedVariableArray(b,x,h,y)}catch(R){throw console.error(`Error getting sliced variable ${b}:`,R),R}}async function p(b,x,h){var k,O,G,X;if(!t.value)throw new Error("No dataset loaded");const y=o.variables[b];if(!y)throw new Error(`Variable ${b} not found`);const R=y.dimensions,_=R.indexOf("lon"),E=R.indexOf("lat");if(_===-1||E===-1)throw new Error(`Variable ${b} does not have lon/lat dimensions`);let M,v;const C=(k=i.lon)==null?void 0:k.data,S=(O=i.lat)==null?void 0:O.data;if(C&&S)M=oe(C,x),v=oe(S,h);else{const P=((G=o.dimensions.lon)==null?void 0:G.size)??y.shape[_]??1,q=((X=o.dimensions.lat)==null?void 0:X.size)??y.shape[E]??1;M=Math.max(0,Math.min(P-1,Math.round((x+180)/360*(P-1)))),v=Math.max(0,Math.min(q-1,Math.round((90-h)/180*(q-1))))}const A=[],T=[];for(let P=0;P<R.length;P++)P===_?(A.push(M),T.push(1)):P===E?(A.push(v),T.push(1)):(A.push(0),T.push(1));try{const P=await g(b,A,T);return P.length>0?P[0]:null}catch(P){throw console.error(`Error getting data at coordinate (lon=${x}, lat=${h}):`,P),P}}async function d(){if(t.value)try{await t.value.close(),t.value=null;for(const b of Object.keys(o))b!=="fileInfo"&&(o[b]={});o.fileInfo=null;for(const b of Object.keys(i))delete i[b];for(const b of Object.keys(r))delete r[b]}catch(b){console.error("Error closing dataset:",b)}}function f(){d(),l.value=!1,n.value=null}return{isLoading:l,error:n,dataset:t,metadata:o,variableData:i,dataStats:r,loadNetCdfFile:a,getVariableData:m,getSlicedVariableData:g,getDataAtCoordinate:p,closeDataset:d,reset:f,detect2dVariables:()=>Fn(o.variables)}}const Qt=e=>{const l=I.ref(null),n=je(),t=I.ref([]),o=I.ref(!1),i=I.ref(null),{isLoading:r,error:a,metadata:u,variableData:s,dataStats:c,loadNetCdfFile:m}=Jt(),g=a,p=I.computed(()=>Fn(u.variables||{}));async function d(b){if(console.log(b,"handleFileSelect进入了"),!b)return;t.value=[],i.value=null;const x=te.validateNetCDFFile(b);if(console.log(x,"fileErrors"),x.length>0){t.value=x,x.forEach(h=>{n.handle(new il(Q.FILE_READ,h,Z.ERROR),{fileName:b.name})});return}l.value=b,o.value=!0;try{const h=await m(b);if(h.success){console.log("File loaded successfully:",b.name),console.log("Metadata:",u);const y=te.validateNetCDFMetadata(u);return y.length>0&&(t.value=y,y.forEach(R=>{n.handle(new il(Q.NETCDF_PARSE,R,Z.WARNING),{fileName:b.name})})),console.log(e,"回调函数"),e&&e.dataLoaded&&e.dataLoaded({variableData:s,metadata:u,dataStats:c}),{success:!0,variableData:s,metadata:u,dataStats:c}}else throw new Error(h.error||"Failed to load netCDF file")}catch(h){const y=h instanceof Error?h.message:String(h);i.value=y,n.handle(new il(Q.NETCDF_LOAD,y,Z.ERROR,h instanceof Error?h:null),{fileName:b.name})}finally{o.value=!1}}function f(b){var _;if(b===0)return"0 Bytes";const x=b??((_=l.value)==null?void 0:_.size)??0,h=1024,y=["Bytes","KB","MB","GB"],R=Math.floor(Math.log(b)/Math.log(h));return parseFloat((x/Math.pow(h,R)).toFixed(2))+" "+y[R]}return{isLoading:o,netcdfLoading:r,displayableVariables:p,handleFileSelect:d,formatFileSize:f,currentFile:l,error:g,loadError:i,validationErrors:t}};function lo(...e){console.warn(...e)}const j={UNKNOWN:0,INTERSECTING:1,ABOVE:2,RIGHT:4,BELOW:8,LEFT:16};function ie(e){const l=Nl();for(let n=0,t=e.length;n<t;++n)Jl(l,e[n]);return l}function We(e,l,n){let t,o;return l<e[0]?t=e[0]-l:e[2]<l?t=l-e[2]:t=0,n<e[1]?o=e[1]-n:e[3]<n?o=n-e[3]:o=0,t*t+o*o}function ze(e,l){return Xe(e,l[0],l[1])}function wn(e,l){return e[0]<=l[0]&&l[2]<=e[2]&&e[1]<=l[1]&&l[3]<=e[3]}function Xe(e,l,n){return e[0]<=l&&l<=e[2]&&e[1]<=n&&n<=e[3]}function re(e,l){const n=e[0],t=e[1],o=e[2],i=e[3],r=l[0],a=l[1];let u=j.UNKNOWN;return r<n?u=u|j.LEFT:r>o&&(u=u|j.RIGHT),a<t?u=u|j.BELOW:a>i&&(u=u|j.ABOVE),u===j.UNKNOWN&&(u=j.INTERSECTING),u}function Nl(){return[1/0,1/0,-1/0,-1/0]}function kn(e,l,n,t,o){return o?(o[0]=e,o[1]=l,o[2]=n,o[3]=t,o):[e,l,n,t]}function jn(e){return kn(1/0,1/0,-1/0,-1/0,e)}function no(e,l){const n=e[0],t=e[1];return kn(n,t,n,t,l)}function eo(e,l,n,t,o){const i=jn(o);return Ze(i,e,l,n,t)}function to(e,l){return e[0]==l[0]&&e[2]==l[2]&&e[1]==l[1]&&e[3]==l[3]}function oo(e,l){return l[0]<e[0]&&(e[0]=l[0]),l[2]>e[2]&&(e[2]=l[2]),l[1]<e[1]&&(e[1]=l[1]),l[3]>e[3]&&(e[3]=l[3]),e}function Jl(e,l){l[0]<e[0]&&(e[0]=l[0]),l[0]>e[2]&&(e[2]=l[0]),l[1]<e[1]&&(e[1]=l[1]),l[1]>e[3]&&(e[3]=l[1])}function Ze(e,l,n,t,o){for(;n<t;n+=o)io(e,l[n],l[n+1]);return e}function io(e,l,n){e[0]=Math.min(e[0],l),e[1]=Math.min(e[1],n),e[2]=Math.max(e[2],l),e[3]=Math.max(e[3],n)}function ro(e,l){let n;return n=l(Gn(e)),n||(n=l(Wn(e)),n)||(n=l(zn(e)),n)||(n=l(an(e)),n)?n:!1}function ao(e){let l=0;return zl(e)||(l=D(e)*H(e)),l}function Gn(e){return[e[0],e[1]]}function Wn(e){return[e[2],e[1]]}function wl(e){return[(e[0]+e[2])/2,(e[1]+e[3])/2]}function He(e,l,n,t,o){const[i,r,a,u,s,c,m,g]=uo(e,l,n,t);return kn(Math.min(i,a,s,m),Math.min(r,u,c,g),Math.max(i,a,s,m),Math.max(r,u,c,g),o)}function uo(e,l,n,t){const o=l*t[0]/2,i=l*t[1]/2,r=Math.cos(n),a=Math.sin(n),u=o*r,s=o*a,c=i*r,m=i*a,g=e[0],p=e[1];return[g-u+m,p-s-c,g-u-m,p-s+c,g+u-m,p+s+c,g+u+m,p+s-c,g-u+m,p-s-c]}function H(e){return e[3]-e[1]}function Ue(e,l,n){const t=n||Nl();return Vl(e,l)?(e[0]>l[0]?t[0]=e[0]:t[0]=l[0],e[1]>l[1]?t[1]=e[1]:t[1]=l[1],e[2]<l[2]?t[2]=e[2]:t[2]=l[2],e[3]<l[3]?t[3]=e[3]:t[3]=l[3]):jn(t),t}function an(e){return[e[0],e[3]]}function zn(e){return[e[2],e[3]]}function D(e){return e[2]-e[0]}function Vl(e,l){return e[0]<=l[2]&&e[2]>=l[0]&&e[1]<=l[3]&&e[3]>=l[1]}function zl(e){return e[2]<e[0]||e[3]<e[1]}function so(e,l){return l?(l[0]=e[0],l[1]=e[1],l[2]=e[2],l[3]=e[3],l):e}function co(e,l,n){let t=!1;const o=re(e,l),i=re(e,n);if(o===j.INTERSECTING||i===j.INTERSECTING)t=!0;else{const r=e[0],a=e[1],u=e[2],s=e[3],c=l[0],m=l[1],g=n[0],p=n[1],d=(p-m)/(g-c);let f,b;i&j.ABOVE&&!(o&j.ABOVE)&&(f=g-(p-s)/d,t=f>=r&&f<=u),!t&&i&j.RIGHT&&!(o&j.RIGHT)&&(b=p-(g-u)*d,t=b>=a&&b<=s),!t&&i&j.BELOW&&!(o&j.BELOW)&&(f=g-(p-a)/d,t=f>=r&&f<=u),!t&&i&j.LEFT&&!(o&j.LEFT)&&(b=p-(g-r)*d,t=b>=a&&b<=s)}return t}function B(e,l,n){return Math.min(Math.max(e,l),n)}function mo(e,l,n,t,o,i){const r=o-n,a=i-t;if(r!==0||a!==0){const u=((e-n)*r+(l-t)*a)/(r*r+a*a);u>1?(n=o,t=i):u>0&&(n+=r*u,t+=a*u)}return Cl(e,l,n,t)}function Cl(e,l,n,t){const o=n-e,i=t-l;return o*o+i*i}function bo(e){const l=e.length;for(let t=0;t<l;t++){let o=t,i=Math.abs(e[t][t]);for(let a=t+1;a<l;a++){const u=Math.abs(e[a][t]);u>i&&(i=u,o=a)}if(i===0)return null;const r=e[o];e[o]=e[t],e[t]=r;for(let a=t+1;a<l;a++){const u=-e[a][t]/e[t][t];for(let s=t;s<l+1;s++)t==s?e[a][s]=0:e[a][s]+=u*e[t][s]}}const n=new Array(l);for(let t=l-1;t>=0;t--){n[t]=e[t][l]/e[t][t];for(let o=t-1;o>=0;o--)e[o][l]-=e[o][t]*n[t]}return n}function ae(e){return e*180/Math.PI}function cl(e){return e*Math.PI/180}function Ml(e,l){const n=e%l;return n*l<0?n+l:n}function go(e,l,n){return e+n*(l-e)}function Be(e,l){const n=Math.pow(10,l);return Math.round(e*n)/n}function Bl(e,l){return Math.ceil(Be(e,l))}function Sn(e,l,n){if(e>=l&&e<n)return e;const t=n-l;return((e-l)%t+t)%t+l}function po(e,l){return e[0]+=+l[0],e[1]+=+l[1],e}function ln(e,l){let n=!0;for(let t=e.length-1;t>=0;--t)if(e[t]!=l[t]){n=!1;break}return n}function ho(e,l){const n=Math.cos(l),t=Math.sin(l),o=e[0]*n-e[1]*t,i=e[1]*n+e[0]*t;return e[0]=o,e[1]=i,e}const $e={radians:6370997/(2*Math.PI),degrees:2*Math.PI*6370997/360,ft:.3048,m:1,"us-ft":1200/3937};class Xn{constructor(l){this.code_=l.code,this.units_=l.units,this.extent_=l.extent!==void 0?l.extent:null,this.worldExtent_=l.worldExtent!==void 0?l.worldExtent:null,this.axisOrientation_=l.axisOrientation!==void 0?l.axisOrientation:"enu",this.global_=l.global!==void 0?l.global:!1,this.canWrapX_=!!(this.global_&&this.extent_),this.getPointResolutionFunc_=l.getPointResolution,this.defaultTileGrid_=null,this.metersPerUnit_=l.metersPerUnit}canWrapX(){return this.canWrapX_}getCode(){return this.code_}getExtent(){return this.extent_}getUnits(){return this.units_}getMetersPerUnit(){return this.metersPerUnit_||$e[this.units_]}getWorldExtent(){return this.worldExtent_}getAxisOrientation(){return this.axisOrientation_}isGlobal(){return this.global_}setGlobal(l){this.global_=l,this.canWrapX_=!!(l&&this.extent_)}getDefaultTileGrid(){return this.defaultTileGrid_}setDefaultTileGrid(l){this.defaultTileGrid_=l}setExtent(l){this.extent_=l,this.canWrapX_=!!(this.global_&&l)}setWorldExtent(l){this.worldExtent_=l}setGetPointResolution(l){this.getPointResolutionFunc_=l}getPointResolutionFunc(){return this.getPointResolutionFunc_}}const Xl=6378137,vl=Math.PI*Xl,xo=[-vl,-vl,vl,vl],fo=[-180,-85,180,85],$l=Xl*Math.log(Math.tan(Math.PI/2));class Rl extends Xn{constructor(l){super({code:l,units:"m",extent:xo,global:!0,worldExtent:fo,getPointResolution:function(n,t){return n/Math.cosh(t[1]/Xl)}})}}const ue=[new Rl("EPSG:3857"),new Rl("EPSG:102100"),new Rl("EPSG:102113"),new Rl("EPSG:900913"),new Rl("http://www.opengis.net/def/crs/EPSG/0/3857"),new Rl("http://www.opengis.net/gml/srs/epsg.xml#3857")];function Ro(e,l,n,t){const o=e.length;n=n>1?n:2,t=t??n,l===void 0&&(n>2?l=e.slice():l=new Array(o));for(let i=0;i<o;i+=t){l[i]=vl*e[i]/180;let r=Xl*Math.log(Math.tan(Math.PI*(+e[i+1]+90)/360));r>$l?r=$l:r<-$l&&(r=-$l),l[i+1]=r}return l}function yo(e,l,n,t){const o=e.length;n=n>1?n:2,t=t??n,l===void 0&&(n>2?l=e.slice():l=new Array(o));for(let i=0;i<o;i+=t)l[i]=180*e[i]/vl,l[i+1]=360*Math.atan(Math.exp(e[i+1]/Xl))/Math.PI-90;return l}const _o=6378137,se=[-180,-90,180,90],Io=Math.PI*_o/180;class bl extends Xn{constructor(l,n){super({code:l,units:"degrees",extent:se,axisOrientation:n,global:!0,metersPerUnit:Io,worldExtent:se})}}const ce=[new bl("CRS:84"),new bl("EPSG:4326","neu"),new bl("urn:ogc:def:crs:OGC:1.3:CRS84"),new bl("urn:ogc:def:crs:OGC:2:84"),new bl("http://www.opengis.net/def/crs/OGC/1.3/CRS84"),new bl("http://www.opengis.net/gml/srs/epsg.xml#4326","neu"),new bl("http://www.opengis.net/def/crs/EPSG/0/4326","neu")];let Nn={};function vo(e){return Nn[e]||Nn[e.replace(/urn:(x-)?ogc:def:crs:EPSG:(.*:)?(\w+)$/,"EPSG:$3")]||null}function Eo(e,l){Nn[e]=l}function Ye(e){for(const l in e)delete e[l]}function Co(e){let l;for(l in e)return!1;return!l}let Al={};function Gl(e,l,n){const t=e.getCode(),o=l.getCode();t in Al||(Al[t]={}),Al[t][o]=n}function hn(e,l){return e in Al&&l in Al[e]?Al[e][l]:null}const nn=.9996,K=.00669438,un=K*K,sn=un*K,gl=K/(1-K),me=Math.sqrt(1-K),Sl=(1-me)/(1+me),Ke=Sl*Sl,Zn=Ke*Sl,Hn=Zn*Sl,qe=Hn*Sl,Je=1-K/4-3*un/64-5*sn/256,Mo=3*K/8+3*un/32+45*sn/1024,Ao=15*un/256+45*sn/1024,To=35*sn/3072,wo=3/2*Sl-27/32*Zn+269/512*qe,So=21/16*Ke-55/32*Hn,No=151/96*Zn-417/128*qe,Vo=1097/512*Hn,en=6378137;function Po(e,l,n){const t=e-5e5,r=(n.north?l:l-1e7)/nn/(en*Je),a=r+wo*Math.sin(2*r)+So*Math.sin(4*r)+No*Math.sin(6*r)+Vo*Math.sin(8*r),u=Math.sin(a),s=u*u,c=Math.cos(a),m=u/c,g=m*m,p=g*g,d=1-K*s,f=Math.sqrt(1-K*s),b=en/f,x=(1-K)/d,h=gl*c**2,y=h*h,R=t/(b*nn),_=R*R,E=_*R,M=E*R,v=M*R,C=v*R,S=a-m/x*(_/2-M/24*(5+3*g+10*h-4*y-9*gl))+C/720*(61+90*g+298*h+45*p-252*gl-3*y);let A=(R-E/6*(1+2*g+h)+v/120*(5-2*h+28*g-3*y+8*gl+24*p))/c;return A=Sn(A+cl(Qe(n.number)),-Math.PI,Math.PI),[ae(A),ae(S)]}const be=-80,ge=84,Do=-180,Oo=180;function Lo(e,l,n){e=Sn(e,Do,Oo),l<be?l=be:l>ge&&(l=ge);const t=cl(l),o=Math.sin(t),i=Math.cos(t),r=o/i,a=r*r,u=a*a,s=cl(e),c=Qe(n.number),m=cl(c),g=en/Math.sqrt(1-K*o**2),p=gl*i**2,d=i*Sn(s-m,-Math.PI,Math.PI),f=d*d,b=f*d,x=b*d,h=x*d,y=h*d,R=en*(Je*t-Mo*Math.sin(2*t)+Ao*Math.sin(4*t)-To*Math.sin(6*t)),_=nn*g*(d+b/6*(1-a+p)+h/120*(5-18*a+u+72*p-58*gl))+5e5;let E=nn*(R+g*r*(f/2+x/24*(5-a+9*p+4*p**2)+y/720*(61-58*a+u+600*p-330*gl)));return n.north||(E+=1e7),[_,E]}function Qe(e){return(e-1)*6-180+3}const Fo=[/^EPSG:(\d+)$/,/^urn:ogc:def:crs:EPSG::(\d+)$/,/^http:\/\/www\.opengis\.net\/def\/crs\/EPSG\/0\/(\d+)$/];function lt(e){let l=0;for(const o of Fo){const i=e.match(o);if(i){l=parseInt(i[1]);break}}if(!l)return null;let n=0,t=!1;return l>32700&&l<32761?n=l-32700:l>32600&&l<32661&&(t=!0,n=l-32600),n?{number:n,north:t}:null}function de(e,l){return function(n,t,o,i){const r=n.length;o=o>1?o:2,i=i??o,t||(o>2?t=n.slice():t=new Array(r));for(let a=0;a<r;a+=i){const u=n[a],s=n[a+1],c=e(u,s,l);t[a]=c[0],t[a+1]=c[1]}return t}}function ko(e){return lt(e)?new Xn({code:e,units:"m"}):null}function jo(e){const l=lt(e.getCode());return l?{forward:de(Lo,l),inverse:de(Po,l)}:null}const Go=63710088e-1;function pe(e,l,n){n=n||Go;const t=cl(e[1]),o=cl(l[1]),i=(o-t)/2,r=cl(l[0]-e[0])/2,a=Math.sin(i)*Math.sin(i)+Math.sin(r)*Math.sin(r)*Math.cos(t)*Math.cos(o);return 2*n*Math.atan2(Math.sqrt(a),Math.sqrt(1-a))}const Wo=[jo],zo=[ko];let Vn=!0;function nt(e){Vn=!1}function Un(e,l){if(l!==void 0){for(let n=0,t=e.length;n<t;++n)l[n]=e[n];l=l}else l=e.slice();return l}function Pn(e){Eo(e.getCode(),e),Gl(e,e,Un)}function Xo(e){e.forEach(Pn)}function ll(e){if(typeof e!="string")return e;const l=vo(e);if(l)return l;for(const n of zo){const t=n(e);if(t)return t}return null}function he(e,l,n,t){e=ll(e);let o;const i=e.getPointResolutionFunc();if(i)o=i(l,n);else{const r=e.getUnits();if(r=="degrees"&&!t||t=="degrees")o=l;else{const a=$n(e,ll("EPSG:4326"));if(!a&&r!=="degrees")o=l*e.getMetersPerUnit();else{let s=[n[0]-l/2,n[1],n[0]+l/2,n[1],n[0],n[1]-l/2,n[0],n[1]+l/2];s=a(s,s,2);const c=pe(s.slice(0,2),s.slice(2,4)),m=pe(s.slice(4,6),s.slice(6,8));o=(c+m)/2}const u=e.getMetersPerUnit();u!==void 0&&(o/=u)}}return o}function xe(e){Xo(e),e.forEach(function(l){e.forEach(function(n){l!==n&&Gl(l,n,Un)})})}function Zo(e,l,n,t){e.forEach(function(o){l.forEach(function(i){Gl(o,i,n),Gl(i,o,t)})})}function Bn(e,l){return e?typeof e=="string"?ll(e):e:ll(l)}function Ho(e){return function(l,n,t,o){const i=l.length;t=t!==void 0?t:2,o=o??t,n=n!==void 0?n:new Array(i);for(let r=0;r<i;r+=o){const a=e(l.slice(r,r+t)),u=a.length;for(let s=0,c=o;s<c;++s)n[r+s]=s>=u?l[r+s]:a[s]}return n}}function xn(e,l){return nt(),cn(e,"EPSG:4326","EPSG:3857")}function Uo(e,l){const n=cn(e,"EPSG:3857","EPSG:4326"),t=n[0];return(t<-180||t>180)&&(n[0]=Ml(t+180,360)-180),n}function fe(e,l){if(e===l)return!0;const n=e.getUnits()===l.getUnits();return(e.getCode()===l.getCode()||$n(e,l)===Un)&&n}function $n(e,l){const n=e.getCode(),t=l.getCode();let o=hn(n,t);if(o)return o;let i=null,r=null;for(const u of Wo)i||(i=u(e)),r||(r=u(l));if(!i&&!r)return null;const a="EPSG:4326";if(r)if(i)o=fn(i.inverse,r.forward);else{const u=hn(n,a);u&&(o=fn(u,r.forward))}else{const u=hn(a,t);u&&(o=fn(i.inverse,u))}return o&&(Pn(e),Pn(l),Gl(e,l,o)),o}function fn(e,l){return function(n,t,o,i){return t=e(n,t,o,i),l(t,t,o,i)}}function tn(e,l){const n=ll(e),t=ll(l);return $n(n,t)}function cn(e,l,n){const t=tn(l,n);if(!t){const o=ll(l).getCode(),i=ll(n).getCode();throw new Error(`No transform available between ${o} and ${i}`)}return t(e,void 0,e.length)}function Re(e,l){return e}function al(e,l){return Vn&&!ln(e,[0,0])&&e[0]>=-180&&e[0]<=180&&e[1]>=-90&&e[1]<=90&&(Vn=!1,lo("Call useGeographic() from ol/proj once to work with [longitude, latitude] coordinates.")),e}function Bo(e,l){return e}function El(e,l){return e}function $o(){xe(ue),xe(ce),Zo(ce,ue,Ro,yo)}$o();const Ll=I.ref(!1),ye=I.ref(null);I.ref(!1);I.ref(null);I.ref(!1);const sl=I.reactive({lat:112.750412,lng:33.741496}),ul=I.reactive({isMoving:!1,lastMoveTime:0,moveTimeout:null});function et(){ye.value&&ye.value.on("pointermove",e=>{console.log(e,"pointermove");const l=e.coordinate;console.log("地图坐标更新:",l),sl.lng=l[0],sl.lat=l[1],ul.isMoving=!0,ul.lastMoveTime=Date.now(),ul.moveTimeout&&clearTimeout(ul.moveTimeout),ul.moveTimeout=setTimeout(()=>{ul.isMoving=!1},100)})}const Yo=({map:e,mapInitialized:l,mapError:n,isLoading:t,currentCoords:o})=>(e.value=e.value,l.value=l.value,n.value=n.value,t.value=t.value,sl.lat=o.lat,sl.lng=o.lng,Ll.value=!0,console.log(e,"地图状态已更新"),{setupEventHandlers:et});function Ko({map:e,mapInitialized:l,mapError:n,isLoading:t,currentCoords:o}){console.log(e,"useOpenLayersMap"),Ll.value=!0,et(),sl.lat=o.lat,sl.lng=o.lng;function i(){e.value&&(e.value.setTarget(void 0),e.value=null,l.value=!1,console.log("地图已销毁"))}function r(m,g,p){if(!e.value)return;const d=e.value.getView();d.animate({center:xn([g,m]),zoom:p??d.getZoom(),duration:500})}function a(){if(!e.value)return null;const m=Uo(e.value.getView().getCenter());return{lat:m[1],lng:m[0]}}function u(){return e.value?e.value.getView().getZoom():null}function s(m){if(!e.value)return;const g=e.value.getView(),p=[...xn([m.southWest.lng,m.southWest.lat]),...xn([m.northEast.lng,m.northEast.lat])];g.fit(p,{padding:[50,50,50,50],duration:1e3,maxZoom:15})}function c(m,g=6){return{lat:m.lat.toFixed(g),lng:m.lng.toFixed(g)}}return Ll.value?{mapState:Ll.value,map:e,mapInitialized:l,mapError:n,isLoading:t,currentCoords:sl,mouseEvents:ul,destroyMap:i,setView:r,getCenter:a,getZoom:u,fitBounds:s,formatCoords:c}:{mapState:Ll.value,map:e,mapInitialized:l,mapError:n,isLoading:t,currentCoords:sl,mouseEvents:ul,destroyMap:i,setView:r,getCenter:a,getZoom:u,fitBounds:s,formatCoords:c}}const V={IDLE:0,LOADING:1,LOADED:2,ERROR:3,EMPTY:4},el={ANIMATING:0,INTERACTING:1};function ol(e,l){if(!e)throw new Error(l)}new Array(6);function Ql(){return[1,0,0,1,0,0]}function tl(e,l){const n=l[0],t=l[1];return l[0]=e[0]*n+e[2]*t+e[4],l[1]=e[1]*n+e[3]*t+e[5],l}function on(e,l,n,t,o,i,r,a){const u=Math.sin(i),s=Math.cos(i);return e[0]=t*s,e[1]=o*u,e[2]=-t*u,e[3]=o*s,e[4]=r*t*s-a*t*u+l,e[5]=r*o*u+a*o*s+n,e}function qo(e,l){const n=Jo(l);ol(n!==0,"Transformation matrix cannot be inverted");const t=l[0],o=l[1],i=l[2],r=l[3],a=l[4],u=l[5];return e[0]=r/n,e[1]=-o/n,e[2]=-i/n,e[3]=t/n,e[4]=(i*u-r*a)/n,e[5]=-(t*u-o*a)/n,e}function Jo(e){return e[0]*e[3]-e[1]*e[2]}const Qo=[1e5,1e5,1e5,1e5,2,2];function li(e){return"matrix("+e.join(", ")+")"}function _e(e){return e.substring(7,e.length-1).split(",").map(parseFloat)}function ni(e,l){const n=_e(e),t=_e(l);for(let o=0;o<6;++o)if(Math.round((n[o]-t[o])*Qo[o])!==0)return!1;return!0}function ei(e,l){return e>l?1:e<l?-1:0}function Yn(e,l,n){if(e[0]<=l)return 0;const t=e.length;if(l<=e[t-1])return t-1;if(typeof n=="function"){for(let o=1;o<t;++o){const i=e[o];if(i===l)return o;if(i<l)return n(l,e[o-1],i)>0?o-1:o}return t-1}if(n>0){for(let o=1;o<t;++o)if(e[o]<l)return o-1;return t-1}if(n<0){for(let o=1;o<t;++o)if(e[o]<=l)return o;return t-1}for(let o=1;o<t;++o){if(e[o]==l)return o;if(e[o]<l)return e[o-1]-l<l-e[o]?o-1:o}return t-1}function ti(e,l){const n=Array.isArray(l)?l:[l],t=n.length;for(let o=0;o<t;o++)e[e.length]=n[o]}function tt(e,l){const n=e.length;if(n!==l.length)return!1;for(let t=0;t<n;t++)if(e[t]!==l[t])return!1;return!0}const hl=typeof navigator<"u"&&typeof navigator.userAgent<"u"?navigator.userAgent.toLowerCase():"",oi=hl.includes("safari")&&!hl.includes("chrom");oi&&(hl.includes("version/15.4")||/cpu (os|iphone os) 15_4 like mac os x/.test(hl));hl.includes("webkit")&&hl.includes("edge");hl.includes("macintosh");const ot=typeof WorkerGlobalScope<"u"&&typeof OffscreenCanvas<"u"&&self instanceof WorkerGlobalScope,it=typeof Image<"u"&&Image.prototype.decode,rt=typeof createImageBitmap=="function";(function(){let e=!1;try{const l=Object.defineProperty({},"passive",{get:function(){e=!0}});window.addEventListener("_",null,l),window.removeEventListener("_",null,l)}catch{}return e})();function xl(e,l,n,t){let o;return n&&n.length?o=n.shift():ot?o=new class extends OffscreenCanvas{constructor(){super(...arguments);L(this,"style",{})}}(e??300,l??150):o=document.createElement("canvas"),e&&(o.width=e),l&&(o.height=l),o.getContext("2d",t)}let Rn;function Ie(){return Rn||(Rn=xl(1,1)),Rn}function at(e){const l=e.canvas;l.width=1,l.height=1,e.clearRect(0,0,1,1)}function ii(){return new Proxy({childNodes:[],appendChild:function(l){return this.childNodes.push(l),l},remove:function(){},removeChild:function(l){const n=this.childNodes.indexOf(l);if(n===-1)throw new Error("Node to remove was not found");return this.childNodes.splice(n,1),l},insertBefore:function(l,n){const t=this.childNodes.indexOf(n);if(t===-1)throw new Error("Reference node not found");return this.childNodes.splice(t,0,l),l},style:{}},{get(l,n,t){return n==="firstElementChild"?l.childNodes.length>0?l.childNodes[0]:null:Reflect.get(l,n,t)}})}function ri(e){return typeof HTMLCanvasElement<"u"&&e instanceof HTMLCanvasElement||typeof OffscreenCanvas<"u"&&e instanceof OffscreenCanvas}const ai=[NaN,NaN,NaN,0];let yn;function ui(){return yn||(yn=xl(1,1,void 0,{willReadFrequently:!0,desynchronized:!0})),yn}const si=/^rgba?\(\s*(\d+%?)\s+(\d+%?)\s+(\d+%?)(?:\s*\/\s*(\d+%|\d*\.\d+|[01]))?\s*\)$/i,ci=/^rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)(?:\s*,\s*(\d+%|\d*\.\d+|[01]))?\s*\)$/i,mi=/^rgba?\(\s*(\d+%)\s*,\s*(\d+%)\s*,\s*(\d+%)(?:\s*,\s*(\d+%|\d*\.\d+|[01]))?\s*\)$/i,bi=/^#([\da-f]{3,4}|[\da-f]{6}|[\da-f]{8})$/i;function Yl(e,l){return e.endsWith("%")?Number(e.substring(0,e.length-1))/l:Number(e)}function kl(e){throw new Error('failed to parse "'+e+'" as color')}function ut(e){if(e.toLowerCase().startsWith("rgb")){const i=e.match(ci)||e.match(si)||e.match(mi);if(i){const r=i[4],a=100/255;return[B(Yl(i[1],a)+.5|0,0,255),B(Yl(i[2],a)+.5|0,0,255),B(Yl(i[3],a)+.5|0,0,255),r!==void 0?B(Yl(r,100),0,1):1]}kl(e)}if(e.startsWith("#")){if(bi.test(e)){const i=e.substring(1),r=i.length<=4?1:2,a=[0,0,0,255];for(let u=0,s=i.length;u<s;u+=r){let c=parseInt(i.substring(u,u+r),16);r===1&&(c+=c<<4),a[u/r]=c}return a[3]=a[3]/255,a}kl(e)}const l=ui();l.fillStyle="#abcdef";let n=l.fillStyle;l.fillStyle=e,l.fillStyle===n&&(l.fillStyle="#fedcba",n=l.fillStyle,l.fillStyle=e,l.fillStyle===n&&kl(e));const t=l.fillStyle;if(t.startsWith("#")||t.startsWith("rgba"))return ut(t);l.clearRect(0,0,1,1),l.fillRect(0,0,1,1);const o=Array.from(l.getImageData(0,0,1,1).data);return o[3]=Be(o[3]/255,3),o}const gi=1024,Ol={};let _n=0;function di(e){if(e==="none")return ai;if(Ol.hasOwnProperty(e))return Ol[e];if(_n>=gi){let n=0;for(const t in Ol)n++&3||(delete Ol[t],--_n)}const l=ut(e);l.length!==4&&kl(e);for(const n of l)isNaN(n)&&kl(e);return Ol[e]=l,++_n,l}function ve(e){return Array.isArray(e)?e:di(e)}class mn{constructor(l){this.propagationStopped,this.defaultPrevented,this.type=l,this.target=null}preventDefault(){this.defaultPrevented=!0}stopPropagation(){this.propagationStopped=!0}}class pi extends mn{constructor(l,n,t,o){super(l),this.inversePixelTransform=n,this.frameState=t,this.context=o}}const Fl={PRERENDER:"prerender",POSTRENDER:"postrender",PRECOMPOSE:"precompose"};class hi{constructor(){L(this,"pushMethodArgs_",(...l)=>(this.push_(l),this));this.instructions_=[],this.zIndex=0,this.offset_=0,this.context_=new Proxy(Ie(),{get:(l,n)=>{if(typeof Ie()[n]=="function")return this.push_(n),this.pushMethodArgs_},set:(l,n,t)=>(this.push_(n,t),!0)})}push_(...l){const n=this.instructions_,t=this.zIndex+this.offset_;n[t]||(n[t]=[]),n[t].push(...l)}pushFunction(l){this.push_(l)}getContext(){return this.context_}draw(l){this.instructions_.forEach(n=>{for(let t=0,o=n.length;t<o;++t){const i=n[t];if(typeof i=="function"){i(l);continue}const r=n[++t];if(typeof l[i]=="function")l[i](...r);else{if(typeof r=="function"){l[i]=r(l);continue}l[i]=r}}})}clear(){this.instructions_.length=0,this.zIndex=0,this.offset_=0}offset(){this.offset_=this.instructions_.length,this.zIndex=0}}const ml={CHANGE:"change"};class xi{constructor(){this.disposed=!1}dispose(){this.disposed||(this.disposed=!0,this.disposeInternal())}disposeInternal(){}}function Dn(){}function fi(e){let l,n,t;return function(){const o=Array.prototype.slice.call(arguments);return(!n||this!==t||!tt(o,n))&&(t=this,n=o,l=e.apply(this,arguments)),l}}function Ri(e){function l(){let n;try{n=e()}catch(t){return Promise.reject(t)}return n instanceof Promise?n:Promise.resolve(n)}return l()}class st extends xi{constructor(l){super(),this.eventTarget_=l,this.pendingRemovals_=null,this.dispatching_=null,this.listeners_=null}addEventListener(l,n){if(!l||!n)return;const t=this.listeners_||(this.listeners_={}),o=t[l]||(t[l]=[]);o.includes(n)||o.push(n)}dispatchEvent(l){const n=typeof l=="string",t=n?l:l.type,o=this.listeners_&&this.listeners_[t];if(!o)return;const i=n?new mn(l):l;i.target||(i.target=this.eventTarget_||this);const r=this.dispatching_||(this.dispatching_={}),a=this.pendingRemovals_||(this.pendingRemovals_={});t in r||(r[t]=0,a[t]=0),++r[t];let u;for(let s=0,c=o.length;s<c;++s)if("handleEvent"in o[s]?u=o[s].handleEvent(i):u=o[s].call(this,i),u===!1||i.propagationStopped){u=!1;break}if(--r[t]===0){let s=a[t];for(delete a[t];s--;)this.removeEventListener(t,Dn);delete r[t]}return u}disposeInternal(){this.listeners_&&Ye(this.listeners_)}getListeners(l){return this.listeners_&&this.listeners_[l]||void 0}hasListener(l){return this.listeners_?l?l in this.listeners_:Object.keys(this.listeners_).length>0:!1}removeEventListener(l,n){if(!this.listeners_)return;const t=this.listeners_[l];if(!t)return;const o=t.indexOf(n);o!==-1&&(this.pendingRemovals_&&l in this.pendingRemovals_?(t[o]=Dn,++this.pendingRemovals_[l]):(t.splice(o,1),t.length===0&&delete this.listeners_[l]))}}function pl(e,l,n,t,o){if(o){const r=n;n=function(a){return e.removeEventListener(l,n),r.call(t??this,a)}}else t&&t!==e&&(n=n.bind(t));const i={target:e,type:l,listener:n};return e.addEventListener(l,n),i}function Ee(e,l,n,t){return pl(e,l,n,t,!0)}function Tl(e){e&&e.target&&(e.target.removeEventListener(e.type,e.listener),Ye(e))}class ct extends st{constructor(){super(),this.on=this.onInternal,this.once=this.onceInternal,this.un=this.unInternal,this.revision_=0}changed(){++this.revision_,this.dispatchEvent(ml.CHANGE)}getRevision(){return this.revision_}onInternal(l,n){if(Array.isArray(l)){const t=l.length,o=new Array(t);for(let i=0;i<t;++i)o[i]=pl(this,l[i],n);return o}return pl(this,l,n)}onceInternal(l,n){let t;if(Array.isArray(l)){const o=l.length;t=new Array(o);for(let i=0;i<o;++i)t[i]=Ee(this,l[i],n)}else t=Ee(this,l,n);return n.ol_key=t,t}unInternal(l,n){const t=n.ol_key;if(t)yi(t);else if(Array.isArray(l))for(let o=0,i=l.length;o<i;++o)this.removeEventListener(l[o],n);else this.removeEventListener(l,n)}}function yi(e){if(Array.isArray(e))for(let l=0,n=e.length;l<n;++l)Tl(e[l]);else Tl(e)}function F(){throw new Error("Unimplemented abstract method.")}let _i=0;function Ii(e){return e.ol_uid||(e.ol_uid=String(++_i))}const vi=5;class Ei extends ct{constructor(l){super(),this.ready=!0,this.boundHandleImageChange_=this.handleImageChange_.bind(this),this.layer_=l,this.staleKeys_=new Array,this.maxStaleKeys=vi}getStaleKeys(){return this.staleKeys_}prependStaleKey(l){this.staleKeys_.unshift(l),this.staleKeys_.length>this.maxStaleKeys&&(this.staleKeys_.length=this.maxStaleKeys)}getFeatures(l){return F()}getData(l){return null}prepareFrame(l){return F()}renderFrame(l,n){return F()}forEachFeatureAtCoordinate(l,n,t,o,i){}getLayer(){return this.layer_}handleFontsChanged(){}handleImageChange_(l){const n=l.target;(n.getState()===V.LOADED||n.getState()===V.ERROR)&&this.renderIfReadyAndVisible()}loadImage(l){let n=l.getState();return n!=V.LOADED&&n!=V.ERROR&&l.addEventListener(ml.CHANGE,this.boundHandleImageChange_),n==V.IDLE&&(l.load(),n=l.getState()),n==V.LOADED}renderIfReadyAndVisible(){const l=this.getLayer();l&&l.getVisible()&&l.getSourceState()==="ready"&&l.changed()}renderDeferred(l){}disposeInternal(){delete this.layer_,super.disposeInternal()}}let Il=null;function Ci(){Il=xl(1,1,void 0,{willReadFrequently:!0})}class Mi extends Ei{constructor(l){super(l),this.container=null,this.renderedResolution,this.tempTransform=Ql(),this.pixelTransform=Ql(),this.inversePixelTransform=Ql(),this.context=null,this.deferredContext_=null,this.containerReused=!1,this.frameState=null}getImageData(l,n,t){Il||Ci(),Il.clearRect(0,0,1,1);let o;try{Il.drawImage(l,n,t,1,1,0,0,1,1),o=Il.getImageData(0,0,1,1).data}catch{return Il=null,null}return o}getBackground(l){let t=this.getLayer().getBackground();return typeof t=="function"&&(t=t(l.viewState.resolution)),t||void 0}useContainer(l,n,t){const o=this.getLayer().getClassName();let i,r;if(l&&l.className===o&&(!t||l&&l.style.backgroundColor&&tt(ve(l.style.backgroundColor),ve(t)))){const a=l.firstElementChild;ri(a)&&(r=a.getContext("2d"))}if(r&&ni(r.canvas.style.transform,n)?(this.container=l,this.context=r,this.containerReused=!0):this.containerReused?(this.container=null,this.context=null,this.containerReused=!1):this.container&&(this.container.style.backgroundColor=null),!this.container){i=ot?ii():document.createElement("div"),i.className=o;let a=i.style;a.position="absolute",a.width="100%",a.height="100%",r=xl();const u=r.canvas;i.appendChild(u),a=u.style,a.position="absolute",a.left="0",a.transformOrigin="top left",this.container=i,this.context=r}!this.containerReused&&t&&!this.container.style.backgroundColor&&(this.container.style.backgroundColor=t)}clipUnrotated(l,n,t){const o=an(t),i=zn(t),r=Wn(t),a=Gn(t);tl(n.coordinateToPixelTransform,o),tl(n.coordinateToPixelTransform,i),tl(n.coordinateToPixelTransform,r),tl(n.coordinateToPixelTransform,a);const u=this.inversePixelTransform;tl(u,o),tl(u,i),tl(u,r),tl(u,a),l.save(),l.beginPath(),l.moveTo(Math.round(o[0]),Math.round(o[1])),l.lineTo(Math.round(i[0]),Math.round(i[1])),l.lineTo(Math.round(r[0]),Math.round(r[1])),l.lineTo(Math.round(a[0]),Math.round(a[1])),l.clip()}prepareContainer(l,n){const t=l.extent,o=l.viewState.resolution,i=l.viewState.rotation,r=l.pixelRatio,a=Math.round(D(t)/o*r),u=Math.round(H(t)/o*r);on(this.pixelTransform,l.size[0]/2,l.size[1]/2,1/r,1/r,i,-a/2,-u/2),qo(this.inversePixelTransform,this.pixelTransform);const s=li(this.pixelTransform);if(this.useContainer(n,s,this.getBackground(l)),!this.containerReused){const c=this.context.canvas;c.width!=a||c.height!=u?(c.width=a,c.height=u):this.context.clearRect(0,0,a,u),s!==c.style.transform&&(c.style.transform=s)}}dispatchRenderEvent_(l,n,t){const o=this.getLayer();if(o.hasListener(l)){const i=new pi(l,this.inversePixelTransform,t,n);o.dispatchEvent(i)}}preRender(l,n){this.frameState=n,!n.declutter&&this.dispatchRenderEvent_(Fl.PRERENDER,l,n)}postRender(l,n){n.declutter||this.dispatchRenderEvent_(Fl.POSTRENDER,l,n)}renderDeferredInternal(l){}getRenderContext(l){return l.declutter&&!this.deferredContext_&&(this.deferredContext_=new hi),l.declutter?this.deferredContext_.getContext():this.context}renderDeferred(l){l.declutter&&(this.dispatchRenderEvent_(Fl.PRERENDER,this.context,l),l.declutter&&this.deferredContext_&&(this.deferredContext_.draw(this.context),this.deferredContext_.clear()),this.renderDeferredInternal(l),this.dispatchRenderEvent_(Fl.POSTRENDER,this.context,l))}getRenderTransform(l,n,t,o,i,r,a){const u=i/2,s=r/2,c=o/n,m=-c,g=-l[0]+a,p=-l[1];return on(this.tempTransform,u,s,c,m,-t,g,p)}disposeInternal(){delete this.frameState,super.disposeInternal()}}class Ai extends Mi{constructor(l){super(l),this.image=null,this.renderedSourceRevision_=0}getImage(){return this.image?this.image.getImage():null}prepareFrame(l){const n=l.layerStatesArray[l.layerIndex],t=l.pixelRatio,o=l.viewState,i=o.resolution,r=this.getLayer().getSource(),a=l.viewHints;let u=l.extent;if(n.extent!==void 0&&(u=Ue(u,El(n.extent,o.projection))),!a[el.ANIMATING]&&!a[el.INTERACTING]&&!zl(u))if(r){!this.getLayer().rendered&&this.renderedSourceRevision_!==r.getRevision()&&(this.image=null),this.renderedSourceRevision_=r.getRevision();const s=o.projection,c=r.getImage(u,i,t,s);c&&(this.loadImage(c)?this.image=c:c.getState()===V.EMPTY&&(this.image=null))}else this.image=null;return!!this.image}getData(l){const n=this.frameState;if(!n)return null;const t=this.getLayer(),o=tl(n.pixelToCoordinateTransform,l.slice()),i=t.getExtent();if(i&&!ze(i,o))return null;const r=this.image.getExtent(),a=this.image.getImage(),u=D(r),s=Math.floor(a.width*((o[0]-r[0])/u));if(s<0||s>=a.width)return null;const c=H(r),m=Math.floor(a.height*((r[3]-o[1])/c));return m<0||m>=a.height?null:this.getImageData(a,s,m)}renderFrame(l,n){const t=this.image,o=t.getExtent(),i=t.getResolution(),[r,a]=Array.isArray(i)?i:[i,i],u=t.getPixelRatio(),s=l.layerStatesArray[l.layerIndex],c=l.pixelRatio,m=l.viewState,g=m.center,p=m.resolution,d=c*r/(p*u),f=c*a/(p*u);this.prepareContainer(l,n);const b=this.context.canvas.width,x=this.context.canvas.height,h=this.getRenderContext(l);let y=!1,R=!0;if(s.extent){const C=El(s.extent,m.projection);R=Vl(C,l.extent),y=R&&!wn(C,l.extent),y&&this.clipUnrotated(h,l,C)}const _=t.getImage(),E=on(this.tempTransform,b/2,x/2,d,f,0,u*(o[0]-g[0])/r,u*(g[1]-o[3])/a);this.renderedResolution=a*c/u;const M=_.width*E[0],v=_.height*E[3];if(this.getLayer().getSource().getInterpolate()||(h.imageSmoothingEnabled=!1),this.preRender(h,l),R&&M>=.5&&v>=.5){const C=E[4],S=E[5],A=s.opacity;A!==1&&(h.save(),h.globalAlpha=A),h.drawImage(_,0,0,+_.width,+_.height,C,S,M,v),A!==1&&h.restore()}return this.postRender(this.context,l),y&&h.restore(),h.imageSmoothingEnabled=!0,this.container}}const Ti={PROPERTYCHANGE:"propertychange"};class Ce extends mn{constructor(l,n,t){super(l),this.key=n,this.oldValue=t}}class bn extends ct{constructor(l){super(),this.on,this.once,this.un,Ii(this),this.values_=null,l!==void 0&&this.setProperties(l)}get(l){let n;return this.values_&&this.values_.hasOwnProperty(l)&&(n=this.values_[l]),n}getKeys(){return this.values_&&Object.keys(this.values_)||[]}getProperties(){return this.values_&&Object.assign({},this.values_)||{}}getPropertiesInternal(){return this.values_}hasProperties(){return!!this.values_}notify(l,n){let t;t=`change:${l}`,this.hasListener(t)&&this.dispatchEvent(new Ce(t,l,n)),t=Ti.PROPERTYCHANGE,this.hasListener(t)&&this.dispatchEvent(new Ce(t,l,n))}addChangeListener(l,n){this.addEventListener(`change:${l}`,n)}removeChangeListener(l,n){this.removeEventListener(`change:${l}`,n)}set(l,n,t){const o=this.values_||(this.values_={});if(t)o[l]=n;else{const i=o[l];o[l]=n,i!==n&&this.notify(l,i)}}setProperties(l,n){for(const t in l)this.set(t,l[t],n)}applyProperties(l){l.values_&&Object.assign(this.values_||(this.values_={}),l.values_)}unset(l,n){if(this.values_&&l in this.values_){const t=this.values_[l];delete this.values_[l],Co(this.values_)&&(this.values_=null),n||this.notify(l,t)}}}const J={CENTER:"center",RESOLUTION:"resolution",ROTATION:"rotation"};function Me(e,l,n){return function(t,o,i,r,a){if(!t)return;if(!o&&!l)return t;const u=l?0:i[0]*o,s=l?0:i[1]*o,c=a?a[0]:0,m=a?a[1]:0;let g=e[0]+u/2+c,p=e[2]-u/2+c,d=e[1]+s/2+m,f=e[3]-s/2+m;g>p&&(g=(p+g)/2,p=g),d>f&&(d=(f+d)/2,f=d);let b=B(t[0],g,p),x=B(t[1],d,f);if(r&&n&&o){const h=30*o;b+=-h*Math.log(1+Math.max(0,g-t[0])/h)+h*Math.log(1+Math.max(0,t[0]-p)/h),x+=-h*Math.log(1+Math.max(0,d-t[1])/h)+h*Math.log(1+Math.max(0,t[1]-f)/h)}return[b,x]}}function wi(e){return e}function Si(e){return Math.pow(e,3)}function Ni(e){return 1-Si(1-e)}function Vi(e){return 3*e*e-2*e*e*e}function Pi(e,l,n,t,o,i,r){i=i||[],r=r||2;let a=0;for(let u=l;u<n;u+=t){const s=e[u],c=e[u+1];i[a++]=o[0]*s+o[2]*c+o[4],i[a++]=o[1]*s+o[3]*c+o[5];for(let m=2;m<r;m++)i[a++]=e[u+m]}return i&&i.length!=a&&(i.length=a),i}function Di(e,l,n,t,o,i,r){r=r||[];const a=Math.cos(o),u=Math.sin(o),s=i[0],c=i[1];let m=0;for(let g=l;g<n;g+=t){const p=e[g]-s,d=e[g+1]-c;r[m++]=s+p*a-d*u,r[m++]=c+p*u+d*a;for(let f=g+2;f<g+t;++f)r[m++]=e[f]}return r&&r.length!=m&&(r.length=m),r}function Oi(e,l,n,t,o,i,r,a){a=a||[];const u=r[0],s=r[1];let c=0;for(let m=l;m<n;m+=t){const g=e[m]-u,p=e[m+1]-s;a[c++]=u+o*g,a[c++]=s+i*p;for(let d=m+2;d<m+t;++d)a[c++]=e[d]}return a&&a.length!=c&&(a.length=c),a}function Li(e,l,n,t,o,i,r){r=r||[];let a=0;for(let u=l;u<n;u+=t){r[a++]=e[u]+o,r[a++]=e[u+1]+i;for(let s=u+2;s<u+t;++s)r[a++]=e[s]}return r&&r.length!=a&&(r.length=a),r}const Ae=Ql(),Fi=[NaN,NaN];class ki extends bn{constructor(){super(),this.extent_=Nl(),this.extentRevision_=-1,this.simplifiedGeometryMaxMinSquaredTolerance=0,this.simplifiedGeometryRevision=0,this.simplifyTransformedInternal=fi((l,n,t)=>{if(!t)return this.getSimplifiedGeometry(n);const o=this.clone();return o.applyTransform(t),o.getSimplifiedGeometry(n)})}simplifyTransformed(l,n){return this.simplifyTransformedInternal(this.getRevision(),l,n)}clone(){return F()}closestPointXY(l,n,t,o){return F()}containsXY(l,n){return this.closestPointXY(l,n,Fi,Number.MIN_VALUE)===0}getClosestPoint(l,n){return n=n||[NaN,NaN],this.closestPointXY(l[0],l[1],n,1/0),n}intersectsCoordinate(l){return this.containsXY(l[0],l[1])}computeExtent(l){return F()}getExtent(l){if(this.extentRevision_!=this.getRevision()){const n=this.computeExtent(this.extent_);(isNaN(n[0])||isNaN(n[1]))&&jn(n),this.extentRevision_=this.getRevision()}return so(this.extent_,l)}rotate(l,n){F()}scale(l,n,t){F()}simplify(l){return this.getSimplifiedGeometry(l*l)}getSimplifiedGeometry(l){return F()}getType(){return F()}applyTransform(l){F()}intersectsExtent(l){return F()}translate(l,n){F()}transform(l,n){const t=ll(l),o=t.getUnits()=="tile-pixels"?function(i,r,a){const u=t.getExtent(),s=t.getWorldExtent(),c=H(s)/H(u);on(Ae,s[0],s[3],c,-c,0,0,0);const m=Pi(i,0,i.length,a,Ae,r),g=tn(t,n);return g?g(m,m,a):m}:tn(t,n);return this.applyTransform(o),this}}class Kn extends ki{constructor(){super(),this.layout="XY",this.stride=2,this.flatCoordinates}computeExtent(l){return eo(this.flatCoordinates,0,this.flatCoordinates.length,this.stride,l)}getCoordinates(){return F()}getFirstCoordinate(){return this.flatCoordinates.slice(0,this.stride)}getFlatCoordinates(){return this.flatCoordinates}getLastCoordinate(){return this.flatCoordinates.slice(this.flatCoordinates.length-this.stride)}getLayout(){return this.layout}getSimplifiedGeometry(l){if(this.simplifiedGeometryRevision!==this.getRevision()&&(this.simplifiedGeometryMaxMinSquaredTolerance=0,this.simplifiedGeometryRevision=this.getRevision()),l<0||this.simplifiedGeometryMaxMinSquaredTolerance!==0&&l<=this.simplifiedGeometryMaxMinSquaredTolerance)return this;const n=this.getSimplifiedGeometryInternal(l);return n.getFlatCoordinates().length<this.flatCoordinates.length?n:(this.simplifiedGeometryMaxMinSquaredTolerance=l,this)}getSimplifiedGeometryInternal(l){return this}getStride(){return this.stride}setFlatCoordinates(l,n){this.stride=Te(l),this.layout=l,this.flatCoordinates=n}setCoordinates(l,n){F()}setLayout(l,n,t){let o;if(l)o=Te(l);else{for(let i=0;i<t;++i){if(n.length===0){this.layout="XY",this.stride=2;return}n=n[0]}o=n.length,l=ji(o)}this.layout=l,this.stride=o}applyTransform(l){this.flatCoordinates&&(l(this.flatCoordinates,this.flatCoordinates,this.layout.startsWith("XYZ")?3:2,this.stride),this.changed())}rotate(l,n){const t=this.getFlatCoordinates();if(t){const o=this.getStride();Di(t,0,t.length,o,l,n,t),this.changed()}}scale(l,n,t){n===void 0&&(n=l),t||(t=wl(this.getExtent()));const o=this.getFlatCoordinates();if(o){const i=this.getStride();Oi(o,0,o.length,i,l,n,t,o),this.changed()}}translate(l,n){const t=this.getFlatCoordinates();if(t){const o=this.getStride();Li(t,0,t.length,o,l,n,t),this.changed()}}}function ji(e){let l;return e==2?l="XY":e==3?l="XYZ":e==4&&(l="XYZM"),l}function Te(e){let l;return e=="XY"?l=2:e=="XYZ"||e=="XYM"?l=3:e=="XYZM"&&(l=4),l}function mt(e,l,n,t){let o=0;const i=e[n-t],r=e[n-t+1];let a=0,u=0;for(;l<n;l+=t){const s=e[l]-i,c=e[l+1]-r;o+=u*s-a*c,a=s,u=c}return o/2}function Gi(e,l,n,t){let o=0;for(let i=0,r=n.length;i<r;++i){const a=n[i];o+=mt(e,l,a,t),l=a}return o}function we(e,l,n,t,o,i,r){const a=e[l],u=e[l+1],s=e[n]-a,c=e[n+1]-u;let m;if(s===0&&c===0)m=l;else{const g=((o-a)*s+(i-u)*c)/(s*s+c*c);if(g>1)m=n;else if(g>0){for(let p=0;p<t;++p)r[p]=go(e[l+p],e[n+p],g);r.length=t;return}else m=l}for(let g=0;g<t;++g)r[g]=e[m+g];r.length=t}function bt(e,l,n,t,o){let i=e[l],r=e[l+1];for(l+=t;l<n;l+=t){const a=e[l],u=e[l+1],s=Cl(i,r,a,u);s>o&&(o=s),i=a,r=u}return o}function Wi(e,l,n,t,o){for(let i=0,r=n.length;i<r;++i){const a=n[i];o=bt(e,l,a,t,o),l=a}return o}function gt(e,l,n,t,o,i,r,a,u,s,c){if(l==n)return s;let m,g;if(o===0){if(g=Cl(r,a,e[l],e[l+1]),g<s){for(m=0;m<t;++m)u[m]=e[l+m];return u.length=t,g}return s}c=c||[NaN,NaN];let p=l+t;for(;p<n;)if(we(e,p-t,p,t,r,a,c),g=Cl(r,a,c[0],c[1]),g<s){for(s=g,m=0;m<t;++m)u[m]=c[m];u.length=t,p+=t}else p+=t*Math.max((Math.sqrt(g)-Math.sqrt(s))/o|0,1);if(we(e,n-t,l,t,r,a,c),g=Cl(r,a,c[0],c[1]),g<s){for(s=g,m=0;m<t;++m)u[m]=c[m];u.length=t}return s}function zi(e,l,n,t,o,i,r,a,u,s,c){c=c||[NaN,NaN];for(let m=0,g=n.length;m<g;++m){const p=n[m];s=gt(e,l,p,t,o,i,r,a,u,s,c),l=p}return s}function Xi(e,l,n,t){for(let o=0,i=n.length;o<i;++o)e[l++]=n[o];return l}function dt(e,l,n,t){for(let o=0,i=n.length;o<i;++o){const r=n[o];for(let a=0;a<t;++a)e[l++]=r[a]}return l}function Zi(e,l,n,t,o){o=o||[];let i=0;for(let r=0,a=n.length;r<a;++r){const u=dt(e,l,n[r],t);o[i++]=u,l=u}return o.length=i,o}function pt(e,l,n,t,o){o=o!==void 0?o:[];let i=0;for(let r=l;r<n;r+=t)o[i++]=e.slice(r,r+t);return o.length=i,o}function Hi(e,l,n,t,o){o=o!==void 0?o:[];let i=0;for(let r=0,a=n.length;r<a;++r){const u=n[r];o[i++]=pt(e,l,u,t,o[i]),l=u}return o.length=i,o}function Ui(e,l,n,t,o,i,r){const a=(n-l)/t;if(a<3){for(;l<n;l+=t)i[r++]=e[l],i[r++]=e[l+1];return r}const u=new Array(a);u[0]=1,u[a-1]=1;const s=[l,n-t];let c=0;for(;s.length>0;){const m=s.pop(),g=s.pop();let p=0;const d=e[g],f=e[g+1],b=e[m],x=e[m+1];for(let h=g+t;h<m;h+=t){const y=e[h],R=e[h+1],_=mo(y,R,d,f,b,x);_>p&&(c=h,p=_)}p>o&&(u[(c-l)/t]=1,g+t<c&&s.push(g,c),c+t<m&&s.push(c,m))}for(let m=0;m<a;++m)u[m]&&(i[r++]=e[l+m*t],i[r++]=e[l+m*t+1]);return r}function yl(e,l){return l*Math.round(e/l)}function Bi(e,l,n,t,o,i,r){if(l==n)return r;let a=yl(e[l],o),u=yl(e[l+1],o);l+=t,i[r++]=a,i[r++]=u;let s,c;do if(s=yl(e[l],o),c=yl(e[l+1],o),l+=t,l==n)return i[r++]=s,i[r++]=c,r;while(s==a&&c==u);for(;l<n;){const m=yl(e[l],o),g=yl(e[l+1],o);if(l+=t,m==s&&g==c)continue;const p=s-a,d=c-u,f=m-a,b=g-u;if(p*b==d*f&&(p<0&&f<p||p==f||p>0&&f>p)&&(d<0&&b<d||d==b||d>0&&b>d)){s=m,c=g;continue}i[r++]=s,i[r++]=c,a=s,u=c,s=m,c=g}return i[r++]=s,i[r++]=c,r}function $i(e,l,n,t,o,i,r,a){for(let u=0,s=n.length;u<s;++u){const c=n[u];r=Bi(e,l,c,t,o,i,r),a.push(r),l=c}return r}class Wl extends Kn{constructor(l,n){super(),this.maxDelta_=-1,this.maxDeltaRevision_=-1,n!==void 0&&!Array.isArray(l[0])?this.setFlatCoordinates(n,l):this.setCoordinates(l,n)}clone(){return new Wl(this.flatCoordinates.slice(),this.layout)}closestPointXY(l,n,t,o){return o<We(this.getExtent(),l,n)?o:(this.maxDeltaRevision_!=this.getRevision()&&(this.maxDelta_=Math.sqrt(bt(this.flatCoordinates,0,this.flatCoordinates.length,this.stride,0)),this.maxDeltaRevision_=this.getRevision()),gt(this.flatCoordinates,0,this.flatCoordinates.length,this.stride,this.maxDelta_,!0,l,n,t,o))}getArea(){return mt(this.flatCoordinates,0,this.flatCoordinates.length,this.stride)}getCoordinates(){return pt(this.flatCoordinates,0,this.flatCoordinates.length,this.stride)}getSimplifiedGeometryInternal(l){const n=[];return n.length=Ui(this.flatCoordinates,0,this.flatCoordinates.length,this.stride,l,n,0),new Wl(n,"XY")}getType(){return"LinearRing"}intersectsExtent(l){return!1}setCoordinates(l,n){this.setLayout(n,l,1),this.flatCoordinates||(this.flatCoordinates=[]),this.flatCoordinates.length=dt(this.flatCoordinates,0,l,this.stride),this.changed()}}class qn extends Kn{constructor(l,n){super(),this.setCoordinates(l,n)}clone(){const l=new qn(this.flatCoordinates.slice(),this.layout);return l.applyProperties(this),l}closestPointXY(l,n,t,o){const i=this.flatCoordinates,r=Cl(l,n,i[0],i[1]);if(r<o){const a=this.stride;for(let u=0;u<a;++u)t[u]=i[u];return t.length=a,r}return o}getCoordinates(){return this.flatCoordinates.slice()}computeExtent(l){return no(this.flatCoordinates,l)}getType(){return"Point"}intersectsExtent(l){return Xe(l,this.flatCoordinates[0],this.flatCoordinates[1])}setCoordinates(l,n){this.setLayout(n,l,0),this.flatCoordinates||(this.flatCoordinates=[]),this.flatCoordinates.length=Xi(this.flatCoordinates,0,l,this.stride),this.changed()}}function Yi(e,l,n,t,o){return!ro(o,function(r){return!dl(e,l,n,t,r[0],r[1])})}function dl(e,l,n,t,o,i){let r=0,a=e[n-t],u=e[n-t+1];for(;l<n;l+=t){const s=e[l],c=e[l+1];u<=i?c>i&&(s-a)*(i-u)-(o-a)*(c-u)>0&&r++:c<=i&&(s-a)*(i-u)-(o-a)*(c-u)<0&&r--,a=s,u=c}return r!==0}function ht(e,l,n,t,o,i){if(n.length===0||!dl(e,l,n[0],t,o,i))return!1;for(let r=1,a=n.length;r<a;++r)if(dl(e,n[r-1],n[r],t,o,i))return!1;return!0}function Ki(e,l,n,t,o,i,r){let a,u,s,c,m,g,p;const d=o[i+1],f=[];for(let h=0,y=n.length;h<y;++h){const R=n[h];for(c=e[R-t],g=e[R-t+1],a=l;a<R;a+=t)m=e[a],p=e[a+1],(d<=g&&p<=d||g<=d&&d<=p)&&(s=(d-g)/(p-g)*(m-c)+c,f.push(s)),c=m,g=p}let b=NaN,x=-1/0;for(f.sort(ei),c=f[0],a=1,u=f.length;a<u;++a){m=f[a];const h=Math.abs(m-c);h>x&&(s=(c+m)/2,ht(e,l,n,t,s,d)&&(b=s,x=h)),c=m}return isNaN(b)&&(b=o[i]),[b,d,x]}function qi(e,l,n,t,o){let i;for(l+=t;l<n;l+=t)if(i=o(e.slice(l-t,l),e.slice(l,l+t)),i)return i;return!1}function xt(e,l,n,t,o,i){return i=i??Ze(Nl(),e,l,n,t),Vl(o,i)?i[0]>=o[0]&&i[2]<=o[2]||i[1]>=o[1]&&i[3]<=o[3]?!0:qi(e,l,n,t,function(r,a){return co(o,r,a)}):!1}function Ji(e,l,n,t,o){return!!(xt(e,l,n,t,o)||dl(e,l,n,t,o[0],o[1])||dl(e,l,n,t,o[0],o[3])||dl(e,l,n,t,o[2],o[1])||dl(e,l,n,t,o[2],o[3]))}function Qi(e,l,n,t,o){if(!Ji(e,l,n[0],t,o))return!1;if(n.length===1)return!0;for(let i=1,r=n.length;i<r;++i)if(Yi(e,n[i-1],n[i],t,o)&&!xt(e,n[i-1],n[i],t,o))return!1;return!0}function lr(e,l,n,t){for(;l<n-t;){for(let o=0;o<t;++o){const i=e[l+o];e[l+o]=e[n-t+o],e[n-t+o]=i}l+=t,n-=t}}function ft(e,l,n,t){let o=0,i=e[n-t],r=e[n-t+1];for(;l<n;l+=t){const a=e[l],u=e[l+1];o+=(a-i)*(u+r),i=a,r=u}return o===0?void 0:o>0}function nr(e,l,n,t,o){o=o!==void 0?o:!1;for(let i=0,r=n.length;i<r;++i){const a=n[i],u=ft(e,l,a,t);if(i===0){if(o&&u||!o&&!u)return!1}else if(o&&!u||!o&&u)return!1;l=a}return!0}function Se(e,l,n,t,o){o=o!==void 0?o:!1;for(let i=0,r=n.length;i<r;++i){const a=n[i],u=ft(e,l,a,t);(i===0?o&&u||!o&&!u:o&&!u||!o&&u)&&lr(e,l,a,t),l=a}return l}class rn extends Kn{constructor(l,n,t){super(),this.ends_=[],this.flatInteriorPointRevision_=-1,this.flatInteriorPoint_=null,this.maxDelta_=-1,this.maxDeltaRevision_=-1,this.orientedRevision_=-1,this.orientedFlatCoordinates_=null,n!==void 0&&t?(this.setFlatCoordinates(n,l),this.ends_=t):this.setCoordinates(l,n)}appendLinearRing(l){this.flatCoordinates?ti(this.flatCoordinates,l.getFlatCoordinates()):this.flatCoordinates=l.getFlatCoordinates().slice(),this.ends_.push(this.flatCoordinates.length),this.changed()}clone(){const l=new rn(this.flatCoordinates.slice(),this.layout,this.ends_.slice());return l.applyProperties(this),l}closestPointXY(l,n,t,o){return o<We(this.getExtent(),l,n)?o:(this.maxDeltaRevision_!=this.getRevision()&&(this.maxDelta_=Math.sqrt(Wi(this.flatCoordinates,0,this.ends_,this.stride,0)),this.maxDeltaRevision_=this.getRevision()),zi(this.flatCoordinates,0,this.ends_,this.stride,this.maxDelta_,!0,l,n,t,o))}containsXY(l,n){return ht(this.getOrientedFlatCoordinates(),0,this.ends_,this.stride,l,n)}getArea(){return Gi(this.getOrientedFlatCoordinates(),0,this.ends_,this.stride)}getCoordinates(l){let n;return l!==void 0?(n=this.getOrientedFlatCoordinates().slice(),Se(n,0,this.ends_,this.stride,l)):n=this.flatCoordinates,Hi(n,0,this.ends_,this.stride)}getEnds(){return this.ends_}getFlatInteriorPoint(){if(this.flatInteriorPointRevision_!=this.getRevision()){const l=wl(this.getExtent());this.flatInteriorPoint_=Ki(this.getOrientedFlatCoordinates(),0,this.ends_,this.stride,l,0),this.flatInteriorPointRevision_=this.getRevision()}return this.flatInteriorPoint_}getInteriorPoint(){return new qn(this.getFlatInteriorPoint(),"XYM")}getLinearRingCount(){return this.ends_.length}getLinearRing(l){return l<0||this.ends_.length<=l?null:new Wl(this.flatCoordinates.slice(l===0?0:this.ends_[l-1],this.ends_[l]),this.layout)}getLinearRings(){const l=this.layout,n=this.flatCoordinates,t=this.ends_,o=[];let i=0;for(let r=0,a=t.length;r<a;++r){const u=t[r],s=new Wl(n.slice(i,u),l);o.push(s),i=u}return o}getOrientedFlatCoordinates(){if(this.orientedRevision_!=this.getRevision()){const l=this.flatCoordinates;nr(l,0,this.ends_,this.stride)?this.orientedFlatCoordinates_=l:(this.orientedFlatCoordinates_=l.slice(),this.orientedFlatCoordinates_.length=Se(this.orientedFlatCoordinates_,0,this.ends_,this.stride)),this.orientedRevision_=this.getRevision()}return this.orientedFlatCoordinates_}getSimplifiedGeometryInternal(l){const n=[],t=[];return n.length=$i(this.flatCoordinates,0,this.ends_,this.stride,Math.sqrt(l),n,0,t),new rn(n,"XY",t)}getType(){return"Polygon"}intersectsExtent(l){return Qi(this.getOrientedFlatCoordinates(),0,this.ends_,this.stride,l)}setCoordinates(l,n){this.setLayout(n,l,2),this.flatCoordinates||(this.flatCoordinates=[]);const t=Zi(this.flatCoordinates,0,l,this.stride,this.ends_);this.flatCoordinates.length=t.length===0?0:t[t.length-1],this.changed()}}function Ne(e){if(zl(e))throw new Error("Cannot create polygon from empty extent");const l=e[0],n=e[1],t=e[2],o=e[3],i=[l,n,l,o,t,o,t,n,l,n];return new rn(i,"XY",[i.length])}function Jn(e,l,n,t){const o=D(l)/n[0],i=H(l)/n[1];return t?Math.min(e,Math.max(o,i)):Math.min(e,Math.min(o,i))}function Qn(e,l,n){let t=Math.min(e,l);const o=50;return t*=Math.log(1+o*Math.max(0,e/l-1))/o+1,n&&(t=Math.max(t,n),t/=Math.log(1+o*Math.max(0,n/e-1))/o+1),B(t,n/2,l*2)}function er(e,l,n,t){return l=l!==void 0?l:!0,function(o,i,r,a){if(o!==void 0){const u=e[0],s=e[e.length-1],c=n?Jn(u,n,r,t):u;if(a)return l?Qn(o,c,s):B(o,s,c);const m=Math.min(c,o),g=Math.floor(Yn(e,m,i));return e[g]>c&&g<e.length-1?e[g+1]:e[g]}}}function tr(e,l,n,t,o,i){return t=t!==void 0?t:!0,n=n!==void 0?n:0,function(r,a,u,s){if(r!==void 0){const c=o?Jn(l,o,u,i):l;if(s)return t?Qn(r,c,n):B(r,n,c);const m=1e-9,g=Math.ceil(Math.log(l/c)/Math.log(e)-m),p=-a*(.5-m)+.5,d=Math.min(c,r),f=Math.floor(Math.log(l/d)/Math.log(e)+p),b=Math.max(g,f),x=l/Math.pow(e,b);return B(x,n,c)}}}function Ve(e,l,n,t,o){return n=n!==void 0?n:!0,function(i,r,a,u){if(i!==void 0){const s=t?Jn(e,t,a,o):e;return!n||!u?B(i,l,s):Qn(i,s,l)}}}function or(e){if(e!==void 0)return 0}function Pe(e){if(e!==void 0)return e}function ir(e){const l=2*Math.PI/e;return function(n,t){if(t)return n;if(n!==void 0)return n=Math.floor(n/l+.5)*l,n}}function rr(e){const l=cl(5);return function(n,t){return t||n===void 0?n:Math.abs(n)<=l?0:n}}const ar=256,In=0;class De extends bn{constructor(l){super(),this.on,this.once,this.un,l=Object.assign({},l),this.hints_=[0,0],this.animations_=[],this.updateAnimationKey_,this.projection_=Bn(l.projection,"EPSG:3857"),this.viewportSize_=[100,100],this.targetCenter_=null,this.targetResolution_,this.targetRotation_,this.nextCenter_=null,this.nextResolution_,this.nextRotation_,this.cancelAnchor_=void 0,l.projection&&nt(),l.center&&(l.center=al(l.center,this.projection_)),l.extent&&(l.extent=El(l.extent,this.projection_)),this.applyOptions_(l)}applyOptions_(l){const n=Object.assign({},l);for(const a in J)delete n[a];this.setProperties(n,!0);const t=sr(l);this.maxResolution_=t.maxResolution,this.minResolution_=t.minResolution,this.zoomFactor_=t.zoomFactor,this.resolutions_=l.resolutions,this.padding_=l.padding,this.minZoom_=t.minZoom;const o=ur(l),i=t.constraint,r=cr(l);this.constraints_={center:o,resolution:i,rotation:r},this.setRotation(l.rotation!==void 0?l.rotation:0),this.setCenterInternal(l.center!==void 0?l.center:null),l.resolution!==void 0?this.setResolution(l.resolution):l.zoom!==void 0&&this.setZoom(l.zoom)}get padding(){return this.padding_}set padding(l){let n=this.padding_;this.padding_=l;const t=this.getCenterInternal();if(t){const o=l||[0,0,0,0];n=n||[0,0,0,0];const i=this.getResolution(),r=i/2*(o[3]-n[3]+n[1]-o[1]),a=i/2*(o[0]-n[0]+n[2]-o[2]);this.setCenterInternal([t[0]+r,t[1]-a])}}getUpdatedOptions_(l){const n=this.getProperties();return n.resolution!==void 0?n.resolution=this.getResolution():n.zoom=this.getZoom(),n.center=this.getCenterInternal(),n.rotation=this.getRotation(),Object.assign({},n,l)}animate(l){this.isDef()&&!this.getAnimating()&&this.resolveConstraints(0);const n=new Array(arguments.length);for(let t=0;t<n.length;++t){let o=arguments[t];o.center&&(o=Object.assign({},o),o.center=al(o.center,this.getProjection())),o.anchor&&(o=Object.assign({},o),o.anchor=al(o.anchor,this.getProjection())),n[t]=o}this.animateInternal.apply(this,n)}animateInternal(l){let n=arguments.length,t;n>1&&typeof arguments[n-1]=="function"&&(t=arguments[n-1],--n);let o=0;for(;o<n&&!this.isDef();++o){const c=arguments[o];c.center&&this.setCenterInternal(c.center),c.zoom!==void 0?this.setZoom(c.zoom):c.resolution&&this.setResolution(c.resolution),c.rotation!==void 0&&this.setRotation(c.rotation)}if(o===n){t&&Kl(t,!0);return}let i=Date.now(),r=this.targetCenter_.slice(),a=this.targetResolution_,u=this.targetRotation_;const s=[];for(;o<n;++o){const c=arguments[o],m={start:i,complete:!1,anchor:c.anchor,duration:c.duration!==void 0?c.duration:1e3,easing:c.easing||Vi,callback:t};if(c.center&&(m.sourceCenter=r,m.targetCenter=c.center.slice(),r=m.targetCenter),c.zoom!==void 0?(m.sourceResolution=a,m.targetResolution=this.getResolutionForZoom(c.zoom),a=m.targetResolution):c.resolution&&(m.sourceResolution=a,m.targetResolution=c.resolution,a=m.targetResolution),c.rotation!==void 0){m.sourceRotation=u;const g=Ml(c.rotation-u+Math.PI,2*Math.PI)-Math.PI;m.targetRotation=u+g,u=m.targetRotation}mr(m)?m.complete=!0:i+=m.duration,s.push(m)}this.animations_.push(s),this.setHint(el.ANIMATING,1),this.updateAnimations_()}getAnimating(){return this.hints_[el.ANIMATING]>0}getInteracting(){return this.hints_[el.INTERACTING]>0}cancelAnimations(){this.setHint(el.ANIMATING,-this.hints_[el.ANIMATING]);let l;for(let n=0,t=this.animations_.length;n<t;++n){const o=this.animations_[n];if(o[0].callback&&Kl(o[0].callback,!1),!l)for(let i=0,r=o.length;i<r;++i){const a=o[i];if(!a.complete){l=a.anchor;break}}}this.animations_.length=0,this.cancelAnchor_=l,this.nextCenter_=null,this.nextResolution_=NaN,this.nextRotation_=NaN}updateAnimations_(){if(this.updateAnimationKey_!==void 0&&(cancelAnimationFrame(this.updateAnimationKey_),this.updateAnimationKey_=void 0),!this.getAnimating())return;const l=Date.now();let n=!1;for(let t=this.animations_.length-1;t>=0;--t){const o=this.animations_[t];let i=!0;for(let r=0,a=o.length;r<a;++r){const u=o[r];if(u.complete)continue;const s=l-u.start;let c=u.duration>0?s/u.duration:1;c>=1?(u.complete=!0,c=1):i=!1;const m=u.easing(c);if(u.sourceCenter){const g=u.sourceCenter[0],p=u.sourceCenter[1],d=u.targetCenter[0],f=u.targetCenter[1];this.nextCenter_=u.targetCenter;const b=g+m*(d-g),x=p+m*(f-p);this.targetCenter_=[b,x]}if(u.sourceResolution&&u.targetResolution){const g=m===1?u.targetResolution:u.sourceResolution+m*(u.targetResolution-u.sourceResolution);if(u.anchor){const p=this.getViewportSize_(this.getRotation()),d=this.constraints_.resolution(g,0,p,!0);this.targetCenter_=this.calculateCenterZoom(d,u.anchor)}this.nextResolution_=u.targetResolution,this.targetResolution_=g,this.applyTargetState_(!0)}if(u.sourceRotation!==void 0&&u.targetRotation!==void 0){const g=m===1?Ml(u.targetRotation+Math.PI,2*Math.PI)-Math.PI:u.sourceRotation+m*(u.targetRotation-u.sourceRotation);if(u.anchor){const p=this.constraints_.rotation(g,!0);this.targetCenter_=this.calculateCenterRotate(p,u.anchor)}this.nextRotation_=u.targetRotation,this.targetRotation_=g}if(this.applyTargetState_(!0),n=!0,!u.complete)break}if(i){this.animations_[t]=null,this.setHint(el.ANIMATING,-1),this.nextCenter_=null,this.nextResolution_=NaN,this.nextRotation_=NaN;const r=o[0].callback;r&&Kl(r,!0)}}this.animations_=this.animations_.filter(Boolean),n&&this.updateAnimationKey_===void 0&&(this.updateAnimationKey_=requestAnimationFrame(this.updateAnimations_.bind(this)))}calculateCenterRotate(l,n){let t;const o=this.getCenterInternal();return o!==void 0&&(t=[o[0]-n[0],o[1]-n[1]],ho(t,l-this.getRotation()),po(t,n)),t}calculateCenterZoom(l,n){let t;const o=this.getCenterInternal(),i=this.getResolution();if(o!==void 0&&i!==void 0){const r=n[0]-l*(n[0]-o[0])/i,a=n[1]-l*(n[1]-o[1])/i;t=[r,a]}return t}getViewportSize_(l){const n=this.viewportSize_;if(l){const t=n[0],o=n[1];return[Math.abs(t*Math.cos(l))+Math.abs(o*Math.sin(l)),Math.abs(t*Math.sin(l))+Math.abs(o*Math.cos(l))]}return n}setViewportSize(l){this.viewportSize_=Array.isArray(l)?l.slice():[100,100],this.getAnimating()||this.resolveConstraints(0)}getCenter(){const l=this.getCenterInternal();return l&&Re(l,this.getProjection())}getCenterInternal(){return this.get(J.CENTER)}getConstraints(){return this.constraints_}getConstrainResolution(){return this.get("constrainResolution")}getHints(l){return l!==void 0?(l[0]=this.hints_[0],l[1]=this.hints_[1],l):this.hints_.slice()}calculateExtent(l){const n=this.calculateExtentInternal(l);return Bo(n,this.getProjection())}calculateExtentInternal(l){l=l||this.getViewportSizeMinusPadding_();const n=this.getCenterInternal();ol(n,"The view center is not defined");const t=this.getResolution();ol(t!==void 0,"The view resolution is not defined");const o=this.getRotation();return ol(o!==void 0,"The view rotation is not defined"),He(n,t,o,l)}getMaxResolution(){return this.maxResolution_}getMinResolution(){return this.minResolution_}getMaxZoom(){return this.getZoomForResolution(this.minResolution_)}setMaxZoom(l){this.applyOptions_(this.getUpdatedOptions_({maxZoom:l}))}getMinZoom(){return this.getZoomForResolution(this.maxResolution_)}setMinZoom(l){this.applyOptions_(this.getUpdatedOptions_({minZoom:l}))}setConstrainResolution(l){this.applyOptions_(this.getUpdatedOptions_({constrainResolution:l}))}getProjection(){return this.projection_}getResolution(){return this.get(J.RESOLUTION)}getResolutions(){return this.resolutions_}getResolutionForExtent(l,n){return this.getResolutionForExtentInternal(El(l,this.getProjection()),n)}getResolutionForExtentInternal(l,n){n=n||this.getViewportSizeMinusPadding_();const t=D(l)/n[0],o=H(l)/n[1];return Math.max(t,o)}getResolutionForValueFunction(l){l=l||2;const n=this.getConstrainedResolution(this.maxResolution_),t=this.minResolution_,o=Math.log(n/t)/Math.log(l);return function(i){return n/Math.pow(l,i*o)}}getRotation(){return this.get(J.ROTATION)}getValueForResolutionFunction(l){const n=Math.log(l||2),t=this.getConstrainedResolution(this.maxResolution_),o=this.minResolution_,i=Math.log(t/o)/n;return function(r){return Math.log(t/r)/n/i}}getViewportSizeMinusPadding_(l){let n=this.getViewportSize_(l);const t=this.padding_;return t&&(n=[n[0]-t[1]-t[3],n[1]-t[0]-t[2]]),n}getState(){const l=this.getProjection(),n=this.getResolution(),t=this.getRotation();let o=this.getCenterInternal();const i=this.padding_;if(i){const r=this.getViewportSizeMinusPadding_();o=vn(o,this.getViewportSize_(),[r[0]/2+i[3],r[1]/2+i[0]],n,t)}return{center:o.slice(0),projection:l!==void 0?l:null,resolution:n,nextCenter:this.nextCenter_,nextResolution:this.nextResolution_,nextRotation:this.nextRotation_,rotation:t,zoom:this.getZoom()}}getViewStateAndExtent(){return{viewState:this.getState(),extent:this.calculateExtent()}}getZoom(){let l;const n=this.getResolution();return n!==void 0&&(l=this.getZoomForResolution(n)),l}getZoomForResolution(l){let n=this.minZoom_||0,t,o;if(this.resolutions_){const i=Yn(this.resolutions_,l,1);n=i,t=this.resolutions_[i],i==this.resolutions_.length-1?o=2:o=t/this.resolutions_[i+1]}else t=this.maxResolution_,o=this.zoomFactor_;return n+Math.log(t/l)/Math.log(o)}getResolutionForZoom(l){var n;if((n=this.resolutions_)!=null&&n.length){if(this.resolutions_.length===1)return this.resolutions_[0];const t=B(Math.floor(l),0,this.resolutions_.length-2),o=this.resolutions_[t]/this.resolutions_[t+1];return this.resolutions_[t]/Math.pow(o,B(l-t,0,1))}return this.maxResolution_/Math.pow(this.zoomFactor_,l-this.minZoom_)}fit(l,n){let t;if(ol(Array.isArray(l)||typeof l.getSimplifiedGeometry=="function","Invalid extent or geometry provided as `geometry`"),Array.isArray(l)){ol(!zl(l),"Cannot fit empty extent provided as `geometry`");const o=El(l,this.getProjection());t=Ne(o)}else if(l.getType()==="Circle"){const o=El(l.getExtent(),this.getProjection());t=Ne(o),t.rotate(this.getRotation(),wl(o))}else t=l;this.fitInternal(t,n)}rotatedExtentForGeometry(l){const n=this.getRotation(),t=Math.cos(n),o=Math.sin(-n),i=l.getFlatCoordinates(),r=l.getStride();let a=1/0,u=1/0,s=-1/0,c=-1/0;for(let m=0,g=i.length;m<g;m+=r){const p=i[m]*t-i[m+1]*o,d=i[m]*o+i[m+1]*t;a=Math.min(a,p),u=Math.min(u,d),s=Math.max(s,p),c=Math.max(c,d)}return[a,u,s,c]}fitInternal(l,n){n=n||{};let t=n.size;t||(t=this.getViewportSizeMinusPadding_());const o=n.padding!==void 0?n.padding:[0,0,0,0],i=n.nearest!==void 0?n.nearest:!1;let r;n.minResolution!==void 0?r=n.minResolution:n.maxZoom!==void 0?r=this.getResolutionForZoom(n.maxZoom):r=0;const a=this.rotatedExtentForGeometry(l);let u=this.getResolutionForExtentInternal(a,[t[0]-o[1]-o[3],t[1]-o[0]-o[2]]);u=isNaN(u)?r:Math.max(u,r),u=this.getConstrainedResolution(u,i?0:1);const s=this.getRotation(),c=Math.sin(s),m=Math.cos(s),g=wl(a);g[0]+=(o[1]-o[3])/2*u,g[1]+=(o[0]-o[2])/2*u;const p=g[0]*m-g[1]*c,d=g[1]*m+g[0]*c,f=this.getConstrainedCenter([p,d],u),b=n.callback?n.callback:Dn;n.duration!==void 0?this.animateInternal({resolution:u,center:f,duration:n.duration,easing:n.easing},b):(this.targetResolution_=u,this.targetCenter_=f,this.applyTargetState_(!1,!0),Kl(b,!0))}centerOn(l,n,t){this.centerOnInternal(al(l,this.getProjection()),n,t)}centerOnInternal(l,n,t){this.setCenterInternal(vn(l,n,t,this.getResolution(),this.getRotation()))}calculateCenterShift(l,n,t,o){let i;const r=this.padding_;if(r&&l){const a=this.getViewportSizeMinusPadding_(-t),u=vn(l,o,[a[0]/2+r[3],a[1]/2+r[0]],n,t);i=[l[0]-u[0],l[1]-u[1]]}return i}isDef(){return!!this.getCenterInternal()&&this.getResolution()!==void 0}adjustCenter(l){const n=Re(this.targetCenter_,this.getProjection());this.setCenter([n[0]+l[0],n[1]+l[1]])}adjustCenterInternal(l){const n=this.targetCenter_;this.setCenterInternal([n[0]+l[0],n[1]+l[1]])}adjustResolution(l,n){n=n&&al(n,this.getProjection()),this.adjustResolutionInternal(l,n)}adjustResolutionInternal(l,n){const t=this.getAnimating()||this.getInteracting(),o=this.getViewportSize_(this.getRotation()),i=this.constraints_.resolution(this.targetResolution_*l,0,o,t);n&&(this.targetCenter_=this.calculateCenterZoom(i,n)),this.targetResolution_*=l,this.applyTargetState_()}adjustZoom(l,n){this.adjustResolution(Math.pow(this.zoomFactor_,-l),n)}adjustRotation(l,n){n&&(n=al(n,this.getProjection())),this.adjustRotationInternal(l,n)}adjustRotationInternal(l,n){const t=this.getAnimating()||this.getInteracting(),o=this.constraints_.rotation(this.targetRotation_+l,t);n&&(this.targetCenter_=this.calculateCenterRotate(o,n)),this.targetRotation_+=l,this.applyTargetState_()}setCenter(l){this.setCenterInternal(l&&al(l,this.getProjection()))}setCenterInternal(l){this.targetCenter_=l,this.applyTargetState_()}setHint(l,n){return this.hints_[l]+=n,this.changed(),this.hints_[l]}setResolution(l){this.targetResolution_=l,this.applyTargetState_()}setRotation(l){this.targetRotation_=l,this.applyTargetState_()}setZoom(l){this.setResolution(this.getResolutionForZoom(l))}applyTargetState_(l,n){const t=this.getAnimating()||this.getInteracting()||n,o=this.constraints_.rotation(this.targetRotation_,t),i=this.getViewportSize_(o),r=this.constraints_.resolution(this.targetResolution_,0,i,t),a=this.constraints_.center(this.targetCenter_,r,i,t,this.calculateCenterShift(this.targetCenter_,r,o,i));this.get(J.ROTATION)!==o&&this.set(J.ROTATION,o),this.get(J.RESOLUTION)!==r&&(this.set(J.RESOLUTION,r),this.set("zoom",this.getZoom(),!0)),(!a||!this.get(J.CENTER)||!ln(this.get(J.CENTER),a))&&this.set(J.CENTER,a),this.getAnimating()&&!l&&this.cancelAnimations(),this.cancelAnchor_=void 0}resolveConstraints(l,n,t){l=l!==void 0?l:200;const o=n||0,i=this.constraints_.rotation(this.targetRotation_),r=this.getViewportSize_(i),a=this.constraints_.resolution(this.targetResolution_,o,r),u=this.constraints_.center(this.targetCenter_,a,r,!1,this.calculateCenterShift(this.targetCenter_,a,i,r));if(l===0&&!this.cancelAnchor_){this.targetResolution_=a,this.targetRotation_=i,this.targetCenter_=u,this.applyTargetState_();return}t=t||(l===0?this.cancelAnchor_:void 0),this.cancelAnchor_=void 0,(this.getResolution()!==a||this.getRotation()!==i||!this.getCenterInternal()||!ln(this.getCenterInternal(),u))&&(this.getAnimating()&&this.cancelAnimations(),this.animateInternal({rotation:i,center:u,resolution:a,duration:l,easing:Ni,anchor:t}))}beginInteraction(){this.resolveConstraints(0),this.setHint(el.INTERACTING,1)}endInteraction(l,n,t){t=t&&al(t,this.getProjection()),this.endInteractionInternal(l,n,t)}endInteractionInternal(l,n,t){this.getInteracting()&&(this.setHint(el.INTERACTING,-1),this.resolveConstraints(l,n,t))}getConstrainedCenter(l,n){const t=this.getViewportSize_(this.getRotation());return this.constraints_.center(l,n||this.getResolution(),t)}getConstrainedZoom(l,n){const t=this.getResolutionForZoom(l);return this.getZoomForResolution(this.getConstrainedResolution(t,n))}getConstrainedResolution(l,n){n=n||0;const t=this.getViewportSize_(this.getRotation());return this.constraints_.resolution(l,n,t)}}function Kl(e,l){setTimeout(function(){e(l)},0)}function ur(e){if(e.extent!==void 0){const n=e.smoothExtentConstraint!==void 0?e.smoothExtentConstraint:!0;return Me(e.extent,e.constrainOnlyCenter,n)}const l=Bn(e.projection,"EPSG:3857");if(e.multiWorld!==!0&&l.isGlobal()){const n=l.getExtent().slice();return n[0]=-1/0,n[2]=1/0,Me(n,!1,!1)}return wi}function sr(e){let l,n,t,r=e.minZoom!==void 0?e.minZoom:In,a=e.maxZoom!==void 0?e.maxZoom:28;const u=e.zoomFactor!==void 0?e.zoomFactor:2,s=e.multiWorld!==void 0?e.multiWorld:!1,c=e.smoothResolutionConstraint!==void 0?e.smoothResolutionConstraint:!0,m=e.showFullExtent!==void 0?e.showFullExtent:!1,g=Bn(e.projection,"EPSG:3857"),p=g.getExtent();let d=e.constrainOnlyCenter,f=e.extent;if(!s&&!f&&g.isGlobal()&&(d=!1,f=p),e.resolutions!==void 0){const b=e.resolutions;n=b[r],t=b[a]!==void 0?b[a]:b[b.length-1],e.constrainResolution?l=er(b,c,!d&&f,m):l=Ve(n,t,c,!d&&f,m)}else{const x=(p?Math.max(D(p),H(p)):360*$e.degrees/g.getMetersPerUnit())/ar/Math.pow(2,In),h=x/Math.pow(2,28-In);n=e.maxResolution,n!==void 0?r=0:n=x/Math.pow(u,r),t=e.minResolution,t===void 0&&(e.maxZoom!==void 0?e.maxResolution!==void 0?t=n/Math.pow(u,a):t=x/Math.pow(u,a):t=h),a=r+Math.floor(Math.log(n/t)/Math.log(u)),t=n/Math.pow(u,a-r),e.constrainResolution?l=tr(u,n,t,c,!d&&f,m):l=Ve(n,t,c,!d&&f,m)}return{constraint:l,maxResolution:n,minResolution:t,minZoom:r,zoomFactor:u}}function cr(e){if(e.enableRotation!==void 0?e.enableRotation:!0){const n=e.constrainRotation;return n===void 0||n===!0?rr():n===!1?Pe:typeof n=="number"?ir(n):Pe}return or}function mr(e){return!(e.sourceCenter&&e.targetCenter&&!ln(e.sourceCenter,e.targetCenter)||e.sourceResolution!==e.targetResolution||e.sourceRotation!==e.targetRotation)}function vn(e,l,n,t,o){const i=Math.cos(-o);let r=Math.sin(-o),a=e[0]*i-e[1]*r,u=e[1]*i+e[0]*r;a+=(l[0]/2-n[0])*t,u+=(n[1]-l[1]/2)*t,r=-r;const s=a*i-u*r,c=u*i+a*r;return[s,c]}const w={OPACITY:"opacity",VISIBLE:"visible",EXTENT:"extent",Z_INDEX:"zIndex",MAX_RESOLUTION:"maxResolution",MIN_RESOLUTION:"minResolution",MAX_ZOOM:"maxZoom",MIN_ZOOM:"minZoom",SOURCE:"source",MAP:"map"};class br extends bn{constructor(l){super(),this.on,this.once,this.un,this.background_=l.background;const n=Object.assign({},l);typeof l.properties=="object"&&(delete n.properties,Object.assign(n,l.properties)),n[w.OPACITY]=l.opacity!==void 0?l.opacity:1,ol(typeof n[w.OPACITY]=="number","Layer opacity must be a number"),n[w.VISIBLE]=l.visible!==void 0?l.visible:!0,n[w.Z_INDEX]=l.zIndex,n[w.MAX_RESOLUTION]=l.maxResolution!==void 0?l.maxResolution:1/0,n[w.MIN_RESOLUTION]=l.minResolution!==void 0?l.minResolution:0,n[w.MIN_ZOOM]=l.minZoom!==void 0?l.minZoom:-1/0,n[w.MAX_ZOOM]=l.maxZoom!==void 0?l.maxZoom:1/0,this.className_=n.className!==void 0?n.className:"ol-layer",delete n.className,this.setProperties(n),this.state_=null}getBackground(){return this.background_}getClassName(){return this.className_}getLayerState(l){const n=this.state_||{layer:this,managed:l===void 0?!0:l},t=this.getZIndex();return n.opacity=B(Math.round(this.getOpacity()*100)/100,0,1),n.visible=this.getVisible(),n.extent=this.getExtent(),n.zIndex=t===void 0&&!n.managed?1/0:t,n.maxResolution=this.getMaxResolution(),n.minResolution=Math.max(this.getMinResolution(),0),n.minZoom=this.getMinZoom(),n.maxZoom=this.getMaxZoom(),this.state_=n,n}getLayersArray(l){return F()}getLayerStatesArray(l){return F()}getExtent(){return this.get(w.EXTENT)}getMaxResolution(){return this.get(w.MAX_RESOLUTION)}getMinResolution(){return this.get(w.MIN_RESOLUTION)}getMinZoom(){return this.get(w.MIN_ZOOM)}getMaxZoom(){return this.get(w.MAX_ZOOM)}getOpacity(){return this.get(w.OPACITY)}getSourceState(){return F()}getVisible(){return this.get(w.VISIBLE)}getZIndex(){return this.get(w.Z_INDEX)}setBackground(l){this.background_=l,this.changed()}setExtent(l){this.set(w.EXTENT,l)}setMaxResolution(l){this.set(w.MAX_RESOLUTION,l)}setMinResolution(l){this.set(w.MIN_RESOLUTION,l)}setMaxZoom(l){this.set(w.MAX_ZOOM,l)}setMinZoom(l){this.set(w.MIN_ZOOM,l)}setOpacity(l){ol(typeof l=="number","Layer opacity must be a number"),this.set(w.OPACITY,l)}setVisible(l){this.set(w.VISIBLE,l)}setZIndex(l){this.set(w.Z_INDEX,l)}disposeInternal(){this.state_&&(this.state_.layer=null,this.state_=null),super.disposeInternal()}}class gr extends br{constructor(l){const n=Object.assign({},l);delete n.source,super(n),this.on,this.once,this.un,this.mapPrecomposeKey_=null,this.mapRenderKey_=null,this.sourceChangeKey_=null,this.renderer_=null,this.sourceReady_=!1,this.rendered=!1,l.render&&(this.render=l.render),l.map&&this.setMap(l.map),this.addChangeListener(w.SOURCE,this.handleSourcePropertyChange_);const t=l.source?l.source:null;this.setSource(t)}getLayersArray(l){return l=l||[],l.push(this),l}getLayerStatesArray(l){return l=l||[],l.push(this.getLayerState()),l}getSource(){return this.get(w.SOURCE)||null}getRenderSource(){return this.getSource()}getSourceState(){const l=this.getSource();return l?l.getState():"undefined"}handleSourceChange_(){this.changed(),!(this.sourceReady_||this.getSource().getState()!=="ready")&&(this.sourceReady_=!0,this.dispatchEvent("sourceready"))}handleSourcePropertyChange_(){this.sourceChangeKey_&&(Tl(this.sourceChangeKey_),this.sourceChangeKey_=null),this.sourceReady_=!1;const l=this.getSource();l&&(this.sourceChangeKey_=pl(l,ml.CHANGE,this.handleSourceChange_,this),l.getState()==="ready"&&(this.sourceReady_=!0,setTimeout(()=>{this.dispatchEvent("sourceready")},0))),this.changed()}getFeatures(l){return this.renderer_?this.renderer_.getFeatures(l):Promise.resolve([])}getData(l){return!this.renderer_||!this.rendered?null:this.renderer_.getData(l)}isVisible(l){let n;const t=this.getMapInternal();!l&&t&&(l=t.getView()),l instanceof De?n={viewState:l.getState(),extent:l.calculateExtent()}:n=l,!n.layerStatesArray&&t&&(n.layerStatesArray=t.getLayerGroup().getLayerStatesArray());let o;if(n.layerStatesArray){if(o=n.layerStatesArray.find(r=>r.layer===this),!o)return!1}else o=this.getLayerState();const i=this.getExtent();return dr(o,n.viewState)&&(!i||Vl(i,n.extent))}getAttributions(l){var i;if(!this.isVisible(l))return[];const n=(i=this.getSource())==null?void 0:i.getAttributions();if(!n)return[];const t=l instanceof De?l.getViewStateAndExtent():l;let o=n(t);return Array.isArray(o)||(o=[o]),o}render(l,n){const t=this.getRenderer();return t.prepareFrame(l)?(this.rendered=!0,t.renderFrame(l,n)):null}unrender(){this.rendered=!1}getDeclutter(){}renderDeclutter(l,n){}renderDeferred(l){const n=this.getRenderer();n&&n.renderDeferred(l)}setMapInternal(l){l||this.unrender(),this.set(w.MAP,l)}getMapInternal(){return this.get(w.MAP)}setMap(l){this.mapPrecomposeKey_&&(Tl(this.mapPrecomposeKey_),this.mapPrecomposeKey_=null),l||this.changed(),this.mapRenderKey_&&(Tl(this.mapRenderKey_),this.mapRenderKey_=null),l&&(this.mapPrecomposeKey_=pl(l,Fl.PRECOMPOSE,this.handlePrecompose_,this),this.mapRenderKey_=pl(this,ml.CHANGE,l.render,l),this.changed())}handlePrecompose_(l){const n=l.frameState.layerStatesArray,t=this.getLayerState(!1);ol(!n.some(o=>o.layer===t.layer),"A layer can only be added to the map once. Use either `layer.setMap()` or `map.addLayer()`, not both."),n.push(t)}setSource(l){this.set(w.SOURCE,l)}getRenderer(){return this.renderer_||(this.renderer_=this.createRenderer()),this.renderer_}hasRenderer(){return!!this.renderer_}createRenderer(){return null}clearRenderer(){this.renderer_&&(this.renderer_.dispose(),delete this.renderer_)}disposeInternal(){this.clearRenderer(),this.setSource(null),super.disposeInternal()}}function dr(e,l){if(!e.visible)return!1;const n=l.resolution;if(n<e.minResolution||n>=e.maxResolution)return!1;const t=l.zoom;return t>e.minZoom&&t<=e.maxZoom}class pr extends gr{constructor(l){l=l||{},super(l)}}class hr extends pr{constructor(l){super(l)}createRenderer(){return new Ai(this)}getData(l){return super.getData(l)}}class le extends st{constructor(l,n,t,o){super(),this.extent=l,this.pixelRatio_=t,this.resolution=n,this.state=typeof o=="function"?V.IDLE:o,this.image_=null,this.loader=typeof o=="function"?o:null}changed(){this.dispatchEvent(ml.CHANGE)}getExtent(){return this.extent}getImage(){return this.image_}getPixelRatio(){return this.pixelRatio_}getResolution(){return this.resolution}getState(){return this.state}load(){if(this.state==V.IDLE&&this.loader){this.state=V.LOADING,this.changed();const l=this.getResolution(),n=Array.isArray(l)?l[0]:l;Ri(()=>this.loader(this.getExtent(),n,this.getPixelRatio())).then(t=>{"image"in t&&(this.image_=t.image),"extent"in t&&(this.extent=t.extent),"resolution"in t&&(this.resolution=t.resolution),"pixelRatio"in t&&(this.pixelRatio_=t.pixelRatio),(t instanceof HTMLImageElement||rt&&t instanceof ImageBitmap||t instanceof HTMLCanvasElement||t instanceof HTMLVideoElement)&&(this.image_=t),this.state=V.LOADED}).catch(t=>{this.state=V.ERROR,console.error(t)}).finally(()=>this.changed())}}setImage(l){this.image_=l}setResolution(l){this.resolution=l}}function xr(e,l){return new Promise((n,t)=>{function o(){r(),n(e)}function i(){r(),t(new Error("Image load error"))}function r(){e.removeEventListener("load",o),e.removeEventListener("error",i)}e.addEventListener("load",o),e.addEventListener("error",i)})}function fr(e,l){return e.src&&it?new Promise((n,t)=>e.decode().then(()=>n(e)).catch(o=>e.complete&&e.width?n(e):t(o))):xr(e)}function Rt(e,l){return l&&(e.src=l),e.src&&it&&rt?e.decode().then(()=>createImageBitmap(e)).catch(n=>{if(e.complete&&e.width)return e;throw n}):fr(e)}let En;const jl=[];function Oe(e,l,n,t,o){e.beginPath(),e.moveTo(0,0),e.lineTo(l,n),e.lineTo(t,o),e.closePath(),e.save(),e.clip(),e.fillRect(0,0,Math.max(l,t)+1,Math.max(n,o)),e.restore()}function Cn(e,l){return Math.abs(e[l*4]-210)>2||Math.abs(e[l*4+3]-.75*255)>2}function Rr(){if(En===void 0){const e=xl(6,6,jl);e.globalCompositeOperation="lighter",e.fillStyle="rgba(210, 0, 0, 0.75)",Oe(e,4,5,4,0),Oe(e,4,5,0,5);const l=e.getImageData(0,0,3,3).data;En=Cn(l,0)||Cn(l,4)||Cn(l,8),at(e),jl.push(e.canvas)}return En}function yr(e,l,n,t){const o=cn(n,l,e);let i=he(l,t,n);const r=l.getMetersPerUnit();r!==void 0&&(i*=r);const a=e.getMetersPerUnit();a!==void 0&&(i/=a);const u=e.getExtent();if(!u||ze(u,o)){const s=he(e,i,o)/i;isFinite(s)&&s>0&&(i/=s)}return i}function _r(e,l,n,t,o,i,r,a,u,s,c,m,g,p){const d=xl(Math.round(n*e),Math.round(n*l),jl);if(m||(d.imageSmoothingEnabled=!1),u.length===0)return d.canvas;d.scale(n,n);function f(_){return Math.round(_*n)/n}d.globalCompositeOperation="lighter";const b=Nl();u.forEach(function(_,E,M){oo(b,_.extent)});let x;const h=n/t,y=(m?1:1+Math.pow(2,-24))/h;(u.length!==1||s!==0)&&(x=xl(Math.round(D(b)*h),Math.round(H(b)*h),jl),m||(x.imageSmoothingEnabled=!1),u.forEach(function(_,E,M){if(_.image.width>0&&_.image.height>0){if(_.clipExtent){x.save();const T=(_.clipExtent[0]-b[0])*h,k=-(_.clipExtent[3]-b[3])*h,O=D(_.clipExtent)*h,G=H(_.clipExtent)*h;x.rect(m?T:Math.round(T),m?k:Math.round(k),m?O:Math.round(T+O)-Math.round(T),m?G:Math.round(k+G)-Math.round(k)),x.clip()}const v=(_.extent[0]-b[0])*h,C=-(_.extent[3]-b[3])*h,S=D(_.extent)*h,A=H(_.extent)*h;x.drawImage(_.image,s,s,_.image.width-2*s,_.image.height-2*s,m?v:Math.round(v),m?C:Math.round(C),m?S:Math.round(v+S)-Math.round(v),m?A:Math.round(C+A)-Math.round(C)),_.clipExtent&&x.restore()}}));const R=an(r);return a.getTriangles().forEach(function(_,E,M){const v=_.source,C=_.target;let S=v[0][0],A=v[0][1],T=v[1][0],k=v[1][1],O=v[2][0],G=v[2][1];const X=f((C[0][0]-R[0])/i),P=f(-(C[0][1]-R[1])/i),q=f((C[1][0]-R[0])/i),rl=f(-(C[1][1]-R[1])/i),Pl=f((C[2][0]-R[0])/i),Zl=f(-(C[2][1]-R[1])/i),N=S,U=A;S=0,A=0,T-=N,k-=U,O-=N,G-=U;const Hl=[[T,k,0,0,q-X],[O,G,0,0,Pl-X],[0,0,T,k,rl-P],[0,0,O,G,Zl-P]],$=bo(Hl);if(!$)return;if(d.save(),d.beginPath(),Rr()||!m){d.moveTo(q,rl);const W=4,z=X-q,fl=P-rl;for(let nl=0;nl<W;nl++)d.lineTo(q+f((nl+1)*z/W),rl+f(nl*fl/(W-1))),nl!=W-1&&d.lineTo(q+f((nl+1)*z/W),rl+f((nl+1)*fl/(W-1)));d.lineTo(Pl,Zl)}else d.moveTo(q,rl),d.lineTo(X,P),d.lineTo(Pl,Zl);d.clip(),d.transform($[0],$[2],$[1],$[3],X,P),d.translate(b[0]-N,b[3]-U);let Y;if(x)Y=x.canvas,d.scale(y,-y);else{const W=u[0],z=W.extent;Y=W.image,d.scale(D(z)/Y.width,-H(z)/Y.height)}d.drawImage(Y,0,0),d.restore()}),x&&(at(x),jl.push(x.canvas)),d.canvas}function On(e){return Array.isArray(e)?Math.min(...e):e}const Ir=10,Le=.25;class vr{constructor(l,n,t,o,i,r,a){this.sourceProj_=l,this.targetProj_=n;let u={};const s=a?Ho(y=>tl(a,cn(y,this.targetProj_,this.sourceProj_))):tn(this.targetProj_,this.sourceProj_);this.transformInv_=function(y){const R=y[0]+"/"+y[1];return u[R]||(u[R]=s(y)),u[R]},this.maxSourceExtent_=o,this.errorThresholdSquared_=i*i,this.triangles_=[],this.wrapsXInSource_=!1,this.canWrapXInSource_=this.sourceProj_.canWrapX()&&!!o&&!!this.sourceProj_.getExtent()&&D(o)>=D(this.sourceProj_.getExtent()),this.sourceWorldWidth_=this.sourceProj_.getExtent()?D(this.sourceProj_.getExtent()):null,this.targetWorldWidth_=this.targetProj_.getExtent()?D(this.targetProj_.getExtent()):null;const c=an(t),m=zn(t),g=Wn(t),p=Gn(t),d=this.transformInv_(c),f=this.transformInv_(m),b=this.transformInv_(g),x=this.transformInv_(p),h=Ir+(r?Math.max(0,Math.ceil(Math.log2(ao(t)/(r*r*256*256)))):0);if(this.addQuad_(c,m,g,p,d,f,b,x,h),this.wrapsXInSource_){let y=1/0;this.triangles_.forEach(function(R,_,E){y=Math.min(y,R.source[0][0],R.source[1][0],R.source[2][0])}),this.triangles_.forEach(R=>{if(Math.max(R.source[0][0],R.source[1][0],R.source[2][0])-y>this.sourceWorldWidth_/2){const _=[[R.source[0][0],R.source[0][1]],[R.source[1][0],R.source[1][1]],[R.source[2][0],R.source[2][1]]];_[0][0]-y>this.sourceWorldWidth_/2&&(_[0][0]-=this.sourceWorldWidth_),_[1][0]-y>this.sourceWorldWidth_/2&&(_[1][0]-=this.sourceWorldWidth_),_[2][0]-y>this.sourceWorldWidth_/2&&(_[2][0]-=this.sourceWorldWidth_);const E=Math.min(_[0][0],_[1][0],_[2][0]);Math.max(_[0][0],_[1][0],_[2][0])-E<this.sourceWorldWidth_/2&&(R.source=_)}})}u={}}addTriangle_(l,n,t,o,i,r){this.triangles_.push({source:[o,i,r],target:[l,n,t]})}addQuad_(l,n,t,o,i,r,a,u,s){const c=ie([i,r,a,u]),m=this.sourceWorldWidth_?D(c)/this.sourceWorldWidth_:null,g=this.sourceWorldWidth_,p=this.sourceProj_.canWrapX()&&m>.5&&m<1;let d=!1;if(s>0){if(this.targetProj_.isGlobal()&&this.targetWorldWidth_){const b=ie([l,n,t,o]);d=D(b)/this.targetWorldWidth_>Le||d}!p&&this.sourceProj_.isGlobal()&&m&&(d=m>Le||d)}if(!d&&this.maxSourceExtent_&&isFinite(c[0])&&isFinite(c[1])&&isFinite(c[2])&&isFinite(c[3])&&!Vl(c,this.maxSourceExtent_))return;let f=0;if(!d&&(!isFinite(i[0])||!isFinite(i[1])||!isFinite(r[0])||!isFinite(r[1])||!isFinite(a[0])||!isFinite(a[1])||!isFinite(u[0])||!isFinite(u[1]))){if(s>0)d=!0;else if(f=(!isFinite(i[0])||!isFinite(i[1])?8:0)+(!isFinite(r[0])||!isFinite(r[1])?4:0)+(!isFinite(a[0])||!isFinite(a[1])?2:0)+(!isFinite(u[0])||!isFinite(u[1])?1:0),f!=1&&f!=2&&f!=4&&f!=8)return}if(s>0){if(!d){const b=[(l[0]+t[0])/2,(l[1]+t[1])/2],x=this.transformInv_(b);let h;p?h=(Ml(i[0],g)+Ml(a[0],g))/2-Ml(x[0],g):h=(i[0]+a[0])/2-x[0];const y=(i[1]+a[1])/2-x[1];d=h*h+y*y>this.errorThresholdSquared_}if(d){if(Math.abs(l[0]-t[0])<=Math.abs(l[1]-t[1])){const b=[(n[0]+t[0])/2,(n[1]+t[1])/2],x=this.transformInv_(b),h=[(o[0]+l[0])/2,(o[1]+l[1])/2],y=this.transformInv_(h);this.addQuad_(l,n,b,h,i,r,x,y,s-1),this.addQuad_(h,b,t,o,y,x,a,u,s-1)}else{const b=[(l[0]+n[0])/2,(l[1]+n[1])/2],x=this.transformInv_(b),h=[(t[0]+o[0])/2,(t[1]+o[1])/2],y=this.transformInv_(h);this.addQuad_(l,b,h,o,i,x,y,u,s-1),this.addQuad_(b,n,t,h,x,r,a,y,s-1)}return}}if(p){if(!this.canWrapXInSource_)return;this.wrapsXInSource_=!0}f&11||this.addTriangle_(l,t,o,i,a,u),f&14||this.addTriangle_(l,t,n,i,a,r),f&&(f&13||this.addTriangle_(n,o,l,r,u,i),f&7||this.addTriangle_(n,o,t,r,u,a))}calculateSourceExtent(){const l=Nl();return this.triangles_.forEach(function(n,t,o){const i=n.source;Jl(l,i[0]),Jl(l,i[1]),Jl(l,i[2])}),l}getTriangles(){return this.triangles_}}const Er=.5;class Cr extends le{constructor(l,n,t,o,i,r,a){let u=l.getExtent();u&&l.canWrapX()&&(u=u.slice(),u[0]=-1/0,u[2]=1/0);let s=n.getExtent();s&&n.canWrapX()&&(s=s.slice(),s[0]=-1/0,s[2]=1/0);const c=s?Ue(t,s):t,m=wl(c),g=yr(l,n,m,o),p=Er,d=new vr(l,n,c,u,g*p,o),f=d.calculateSourceExtent(),b=zl(f)?null:r(f,g,i),x=b?V.IDLE:V.EMPTY,h=b?b.getPixelRatio():1;super(t,o,h,x),this.targetProj_=n,this.maxSourceExtent_=u,this.triangulation_=d,this.targetResolution_=o,this.targetExtent_=t,this.sourceImage_=b,this.sourcePixelRatio_=h,this.interpolate_=a,this.canvas_=null,this.sourceListenerKey_=null}disposeInternal(){this.state==V.LOADING&&this.unlistenSource_(),super.disposeInternal()}getImage(){return this.canvas_}getProjection(){return this.targetProj_}reproject_(){const l=this.sourceImage_.getState();if(l==V.LOADED){const n=D(this.targetExtent_)/this.targetResolution_,t=H(this.targetExtent_)/this.targetResolution_;this.canvas_=_r(n,t,this.sourcePixelRatio_,On(this.sourceImage_.getResolution()),this.maxSourceExtent_,this.targetResolution_,this.targetExtent_,this.triangulation_,[{extent:this.sourceImage_.getExtent(),image:this.sourceImage_.getImage()}],0,void 0,this.interpolate_)}this.state=l,this.changed()}load(){if(this.state==V.IDLE){this.state=V.LOADING,this.changed();const l=this.sourceImage_.getState();l==V.LOADED||l==V.ERROR?this.reproject_():(this.sourceListenerKey_=pl(this.sourceImage_,ml.CHANGE,n=>{const t=this.sourceImage_.getState();(t==V.LOADED||t==V.ERROR)&&(this.unlistenSource_(),this.reproject_())}),this.sourceImage_.load())}}unlistenSource_(){Tl(this.sourceListenerKey_),this.sourceListenerKey_=null}}class Mr extends bn{constructor(l){super(),this.projection=ll(l.projection),this.attributions_=Fe(l.attributions),this.attributionsCollapsible_=l.attributionsCollapsible??!0,this.loading=!1,this.state_=l.state!==void 0?l.state:"ready",this.wrapX_=l.wrapX!==void 0?l.wrapX:!1,this.interpolate_=!!l.interpolate,this.viewResolver=null,this.viewRejector=null;const n=this;this.viewPromise_=new Promise(function(t,o){n.viewResolver=t,n.viewRejector=o})}getAttributions(){return this.attributions_}getAttributionsCollapsible(){return this.attributionsCollapsible_}getProjection(){return this.projection}getResolutions(l){return null}getView(){return this.viewPromise_}getState(){return this.state_}getWrapX(){return this.wrapX_}getInterpolate(){return this.interpolate_}refresh(){this.changed()}setAttributions(l){this.attributions_=Fe(l),this.changed()}setState(l){this.state_=l,this.changed()}}function Fe(e){return e?typeof e=="function"?e:(Array.isArray(e)||(e=[e]),l=>e):null}const ql=4,Mn={IMAGELOADSTART:"imageloadstart",IMAGELOADEND:"imageloadend",IMAGELOADERROR:"imageloaderror"};class Ar extends mn{constructor(l,n){super(l),this.image=n}}class Tr extends Mr{constructor(l){super({attributions:l.attributions,projection:l.projection,state:l.state,interpolate:l.interpolate!==void 0?l.interpolate:!0}),this.on,this.once,this.un,this.loader=l.loader||null,this.resolutions_=l.resolutions!==void 0?l.resolutions:null,this.reprojectedImage_=null,this.reprojectedRevision_=0,this.image=null,this.wantedExtent_,this.wantedResolution_,this.static_=l.loader?l.loader.length===0:!1,this.wantedProjection_=null}getResolutions(){return this.resolutions_}setResolutions(l){this.resolutions_=l}findNearestResolution(l){const n=this.getResolutions();if(n){const t=Yn(n,l,0);l=n[t]}return l}getImage(l,n,t,o){const i=this.getProjection();if(!i||!o||fe(i,o))return i&&(o=i),this.getImageInternal(l,n,t,o);if(this.reprojectedImage_){if(this.reprojectedRevision_==this.getRevision()&&fe(this.reprojectedImage_.getProjection(),o)&&this.reprojectedImage_.getResolution()==n&&to(this.reprojectedImage_.getExtent(),l))return this.reprojectedImage_;this.reprojectedImage_.dispose(),this.reprojectedImage_=null}return this.reprojectedImage_=new Cr(i,o,l,n,t,(r,a,u)=>this.getImageInternal(r,a,u,i),this.getInterpolate()),this.reprojectedRevision_=this.getRevision(),this.reprojectedImage_}getImageInternal(l,n,t,o){if(this.loader){const i=Sr(l,n,t,1),r=this.findNearestResolution(n);if(this.image&&(this.static_||this.wantedProjection_===o&&(this.wantedExtent_&&wn(this.wantedExtent_,i)||wn(this.image.getExtent(),i))&&(this.wantedResolution_&&On(this.wantedResolution_)===r||On(this.image.getResolution())===r)))return this.image;this.wantedProjection_=o,this.wantedExtent_=i,this.wantedResolution_=r,this.image=new le(i,r,t,this.loader),this.image.addEventListener(ml.CHANGE,this.handleImageChange.bind(this))}return this.image}handleImageChange(l){const n=l.target;let t;switch(n.getState()){case V.LOADING:this.loading=!0,t=Mn.IMAGELOADSTART;break;case V.LOADED:this.loading=!1,t=Mn.IMAGELOADEND;break;case V.ERROR:this.loading=!1,t=Mn.IMAGELOADERROR;break;default:return}this.hasListener(t)&&this.dispatchEvent(new Ar(t,n))}}function wr(e,l){e.getImage().src=l}function Sr(e,l,n,t){const o=l/n,i=wl(e),r=Bl(D(e)/o,ql),a=Bl(H(e)/o,ql),u=Bl((t-1)*r/2,ql),s=r+2*u,c=Bl((t-1)*a/2,ql),m=a+2*c;return He(i,o,0,[s,m])}function Nr(e){const l=e.load||Rt,n=e.imageExtent,t=e.crossOrigin??null;return()=>{const o=new Image;return o.crossOrigin=t,e.referrerPolicy!==void 0&&(o.referrerPolicy=e.referrerPolicy),l(o,e.url).then(i=>{const r=D(n)/i.width,a=H(n)/i.height;return{image:i,extent:n,resolution:r!==a?[r,a]:a,pixelRatio:1}})}}class Vr extends Tr{constructor(l){const n=l.crossOrigin!==void 0?l.crossOrigin:null,t=l.imageLoadFunction!==void 0?l.imageLoadFunction:wr;super({attributions:l.attributions,interpolate:l.interpolate,projection:ll(l.projection)}),this.url_=l.url,this.imageExtent_=l.imageExtent,this.image=null,this.image=new le(this.imageExtent_,void 0,1,Nr({url:l.url,imageExtent:l.imageExtent,crossOrigin:n,referrerPolicy:l.referrerPolicy,load:(o,i)=>(this.image.setImage(o),t(this.image,i),Rt(o))})),this.image.addEventListener(ml.CHANGE,this.handleImageChange.bind(this))}getImageExtent(){return this.imageExtent_}getImageInternal(l,n,t,o){return Vl(l,this.image.getExtent())?this.image:null}getUrl(){return this.url_}}function Pr(){console.log("useMapRendering");const e=I.ref(!1),l=I.ref(null),n=I.ref(null),t=I.ref(null),o=I.reactive({colormap:"viridis",opacity:.8,showBounds:!0,autoFit:!0,resampleTo:null,minValue:null,maxValue:null});async function i(p,d,f,b,x){var h,y,R,_;e.value=!0,l.value=null;try{const E=p.data;if(!E||E.length===0)throw new Error("No data available");const M=((y=(h=d.dimensions)==null?void 0:h.lon)==null?void 0:y.size)??0,v=((_=(R=d.dimensions)==null?void 0:R.lat)==null?void 0:_.size)??0;if(M===0||v===0)throw new Error("Invalid dimension sizes");let C;b?C=b:C=a(M,v);const A=(await r(E,M,v,x)).canvas.toDataURL("image/png");console.log("Image URL:",A);const T=new hr({source:new Vr({url:A,imageExtent:C,projection:"EPSG:4326"}),opacity:o.opacity});return f.addLayer(T),o.autoFit&&f.getView().fit(C,{size:f.getSize(),padding:[20,20,20,20]}),n.value=T,t.value=C,T}catch(E){const M=E instanceof Error?E.message:String(E);throw l.value=M,E}finally{e.value=!1}}async function r(p,d,f,b){let x=p,h=d,y=f;if(o.resampleTo){const[v,C]=o.resampleTo;v>0&&C>0&&(x=Kt(p,[f,d],[C,v]),h=v,y=C)}if(b){const v=await Ln(b);if(v){const C=Wt(v),S=Yt(x,C),A=Tn(h,y);return ee(A,S,h,y),{canvas:A,pixelData:S,normalizedData:null,width:h,height:y}}}const R=Bt(x,o.minValue??void 0,o.maxValue??void 0),_=An(o.colormap),E=$t(R,_),M=Tn(h,y);return ee(M,E,h,y),{canvas:M,pixelData:E,normalizedData:R,width:h,height:y}}function a(p,d){return[-180,-60,180,85]}function u(p){o.opacity=Math.max(0,Math.min(1,p)),n.value&&n.value.setOpacity(o.opacity)}async function s(p,d,f,b){var x,h;if(o.colormap=p,n.value&&d&&f)try{const y=((h=(x=n.value).getMap)==null?void 0:h.call(x))??n.value.get("map");c(),y&&await i(d,f,y,void 0,b)}catch(y){console.error("更新色彩方案时出错:",y)}}function c(){var p,d;if(n.value){const f=((d=(p=n.value).getMap)==null?void 0:d.call(p))??n.value.get("map");f&&f.removeLayer(n.value),n.value=null,t.value=null}}function m(p,d,f){if(!t.value||!(d!=null&&d.data))return null;const b=d.data,x=d.shape??[],h=d.dimensions??[],y=h.indexOf("lon"),R=h.indexOf("lat");if(y===-1||R===-1)return null;const _=x[y]??0,E=x[R]??0;if(_===0||E===0)return null;const[M,v,C,S]=t.value,A=Math.floor((p.lng-M)/(C-M)*(_-1)),T=Math.floor((p.lat-v)/(S-v)*(E-1)),k=E-1-T,O=Math.max(0,Math.min(_-1,A)),X=Math.max(0,Math.min(E-1,k))*_+O;return X>=0&&X<b.length?b[X]:null}function g(){c(),e.value=!1,l.value=null,o.colormap="viridis",o.opacity=.8,o.showBounds=!0,o.autoFit=!0,o.resampleTo=null,o.minValue=null,o.maxValue=null}return{isLoading:e,error:l,overlay:n,bounds:t,options:o,createDataOverlay:i,updateOpacity:u,updateColormap:s,removeOverlay:c,getValueAtCoordinate:m,reset:g}}function Dr(e,l,n,t,o,i){let r=null,a=null,u=null;console.log("useGridLabels执行",e,l,n,t,o);const s=I.ref(document.getElementById("xmGridLabelsCanvas")||null);function c(){const b=s.value,x=b==null?void 0:b.parentElement;!b||!x||(b.width=x.clientWidth,b.height=x.clientHeight)}function m(){const b=s.value;if(!b)return;const x=b.getContext("2d");x&&x.clearRect(0,0,b.width,b.height)}function g(){const b=s.value,x=e.value,h=l.value,y=n.value;if(!b||!x||!h||!y)return;const R=b.getContext("2d");if(!R)return;const _=b.width,E=b.height;R.clearRect(0,0,_,E);const M=o.value;R.font="11px monospace",R.textAlign="center",R.textBaseline="middle";for(let v=M/2;v<_;v+=M)for(let C=M/2;C<E;C+=M){const S=[v,C],A=x.getCoordinateFromPixel(S),[T,k]=A,O=i({lat:k,lng:T},h,y);if(O===null||!isFinite(O))continue;const G=O.toFixed(1);R.strokeStyle="rgba(0, 0, 0, 0.72)",R.lineWidth=3,R.lineJoin="round",R.strokeText(G,v,C),R.fillStyle="white",R.fillText(G,v,C)}}function p(){console.log(t.value,e.value,s.value,l.value,n.value,"重绘标签"),!(!t.value||!e.value||!s.value||!l.value||!n.value)&&g()}function d(b){a=()=>p(),u=()=>p(),b.on("moveend",a),b.getView().on("change:resolution",u)}function f(b){a&&b.un("moveend",a),u&&b.getView().un("change:resolution",u),a=null,u=null}I.watch(e,(b,x)=>{console.log("地图变化",b,x),x&&f(x),b&&(d(b),c(),p())},{immediate:!0}),I.watch(s,b=>{r&&(r.disconnect(),r=null),b!=null&&b.parentElement&&(r=new ResizeObserver(()=>{c(),p()}),r.observe(b.parentElement))},{immediate:!0}),I.watch(t,b=>{console.log("enabled 变化",b),b?(console.log("绘制标签数值",t),c(),p()):m()},{immediate:!0}),I.watch(l,()=>{console.log("variableData 变化",l),p()},{immediate:!0,deep:!0}),I.onUnmounted(()=>{console.log("地图销毁--组件内部清理"),e.value&&f(e.value),r&&(r.disconnect(),r=null)})}class Or{constructor(l={}){L(this,"options");L(this,"isRendering",!1);L(this,"currentChunk",0);L(this,"totalChunks",0);L(this,"onProgress",null);L(this,"onComplete",null);this.options={chunkSize:1e5,delayBetweenChunks:10,...l}}async render(l,n,t=null,o=null){if(this.isRendering)throw new Error("Already rendering");this.isRendering=!0,this.currentChunk=0,this.totalChunks=Math.ceil(l.length/this.options.chunkSize),this.onProgress=t,this.onComplete=o;for(let i=0;i<l.length&&this.isRendering;i+=this.options.chunkSize){const r=l.slice(i,i+this.options.chunkSize),a=Math.floor(i/this.options.chunkSize);await n(r,a,i),this.currentChunk=a+1,this.onProgress&&this.onProgress({current:this.currentChunk,total:this.totalChunks,percent:Math.round(this.currentChunk/this.totalChunks*100)}),this.options.delayBetweenChunks>0&&await new Promise(u=>setTimeout(u,this.options.delayBetweenChunks))}this.isRendering=!1,this.onComplete&&this.onComplete()}cancel(){this.isRendering=!1}getProgress(){return{current:this.currentChunk,total:this.totalChunks,percent:this.totalChunks>0?Math.round(this.currentChunk/this.totalChunks*100):0,isRendering:this.isRendering}}}function Lr(e,l){let n;return function(...o){const i=()=>{clearTimeout(n),e(...o)};clearTimeout(n),n=setTimeout(i,l)}}function Fr(e,l){let n=!1;return function(...o){n||(e(...o),n=!0,setTimeout(()=>{n=!1},l))}}const kr=(e,l,n)=>{console.log("info-getFileData接收得参数",l);const t=I.reactive({variableData:null,metadata:null,bounds:null,variableName:null});return t.variableData=l.variableData||null,t.metadata=l.metadata||null,t.bounds=l.bounds||null,t.variableName=l.variableName||null,jr(e,t,n)},jr=(e,l,n)=>{const t=I.ref(!1);I.watch(()=>l.variableName,async N=>{if(console.log("执行监听器-variableName",N),!N){t.value=!1;return}const U=await Ln(N);t.value=U!==null},{immediate:!0});const o=I.ref(!0),i=I.ref(80),r=I.ref(2),a=I.ref(null),u=I.ref({current:0,total:0,percent:0}),s=I.ref(!0),c=I.ref(1e6),{mapState:m,map:g,mapInitialized:p,mapError:d,isLoading:f,currentCoords:b,mouseEvents:x,destroyMap:h,setView:y,getCenter:R,getZoom:_,fitBounds:E,formatCoords:M}=Ko(e);if(console.log(g,"useOpenLayersMap地图看看"),!m)throw new Error("地图未初始化");const{overlay:v,bounds:C,options:S,isLoading:A,createDataOverlay:T,updateOpacity:k,removeOverlay:O,getValueAtCoordinate:G}=Pr();console.log(v,"overlay看看");const X=I.computed(()=>!!v.value);console.log(X,"hasDataOverlay看看");const P=I.computed(()=>A.value);Dr(g,I.toRef(l,"variableData"),I.toRef(l,"metadata"),o,i,G);const q=Lr(async(N,U,Hl)=>{const $=[112.1292,34.51661],Y=[113.1107,34.51661],W=[113.1107,33.53511],z=[112.1292,33.53511],fl=Math.min($[0],z[0],Y[0],W[0]),nl=Math.max($[0],z[0],Y[0],W[0]),yt=Math.min($[1],z[1],Y[1],W[1]),_t=Math.max($[1],z[1],Y[1],W[1]),ne=[fl,yt,nl,_t];s.value&&N.data.length>c.value?await Pl(N,U,ne,l.variableName??void 0):await T(N,U,g.value,ne,l.variableName??void 0)},300),rl=Fr(()=>{if(p.value){const N=_();N!==null&&(r.value=N)}},500);I.watch(()=>({lat:b.lat,lng:b.lng}),N=>{if(n.coordChange&&n.coordChange(N),l.variableData&&l.metadata&&p.value){const U=G(N,l.variableData,l.metadata);n.getCoordinate&&n.getCoordinate(N,U)}},{deep:!0,immediate:!0}),I.watch(()=>l.variableData,async N=>{if(console.log("newData",N,"props.metadata",l.metadata,"props.bounds",l.bounds),N&&l.metadata&&p.value)try{await q(N,l.metadata,l.bounds)}catch(U){console.error("Failed to create data overlay:",U)}},{deep:!0,immediate:!0});async function Pl(N,U,Hl,$){a.value&&a.value.cancel(),a.value=new Or({chunkSize:1e5,delayBetweenChunks:10}),O(),u.value={current:0,total:0,percent:0};const Y=N.data,W=Array.from(Y);try{await a.value.render(W,async(z,fl,nl)=>{console.log(`正在渲染分块 ${fl+1},点数:${z.length}`)},z=>{u.value=z},()=>{T(N,U,g.value,Hl??void 0,$),a.value=null})}catch(z){console.error("Progressive rendering failed:",z),a.value=null}}return{options:S,bounds:C,currentZoom:r,mapCoords:b,hasDataOverlay:X,isRendering:P,renderingProgress:u,removeOverlay:O,updateOpacity:k,updateZoom:()=>{rl.call(null)}}},Gr=e=>{const l=I.reactive({coordinates:{lat:null,lng:null},dataValue:null,dataStats:null,currentFile:null,isLoading:!1,error:null});l.coordinates=e.coordinates||{lat:null,lng:null},l.dataValue=e.dataValue||null,l.dataStats=e.dataStats||null,l.currentFile=e.currentFile||null,l.isLoading=e.isLoading||!1,l.error=e.error||null;const n=I.ref("ready"),t=I.computed(()=>l.error?"错误":l.isLoading?"加载中":l.currentFile&&!l.isLoading?"就绪":"等待中"),o=I.computed(()=>l.error?l.error:l.isLoading?"正在解析 netCDF 数据":l.currentFile?"数据已加载,可以使用":"请上传 netCDF 文件以开始使用"),i=I.computed(()=>l.dataValue===null||l.dataValue===void 0?"--":typeof l.dataValue=="number"?l.dataValue.toFixed(2):l.dataValue),r=I.computed(()=>{var s,c;const u=m=>m==null?"--":typeof m=="number"?m.toFixed(4):String(m);return{lat:u((s=l.coordinates)==null?void 0:s.lat),lng:u((c=l.coordinates)==null?void 0:c.lng)}});I.watch(()=>l.isLoading,u=>{u?n.value="loading":l.error?n.value="error":l.currentFile?n.value="ready":n.value="waiting"},{immediate:!0}),I.watch(()=>l.error,u=>{u&&(n.value="error")},{immediate:!0});function a(u){if(!u||u===0)return"0 Bytes";const s=1024,c=["Bytes","KB","MB","GB"],m=Math.floor(Math.log(u)/Math.log(s));return parseFloat((u/Math.pow(s,m)).toFixed(2))+" "+c[m]}return{formattedCoordinates:r,currentValue:i,statusText:t,statusDetail:o,currentFile:l.currentFile,dataStats:l.dataStats,systemStatus:n,formatFileSize:a}},Wr="0.0.1";exports.detect2dVariables=Fn;exports.getColorData=zt;exports.getFileData=kr;exports.getJsonItemForVariable=Ln;exports.getStatusInfo=Gr;exports.useLoadFile=Qt;exports.useMapInfo=Yo;exports.version=Wr;
|
|
2
2
|
//# sourceMappingURL=xm-netcdf-loader.cjs.js.map
|