Vyvíjím webové mapové aplikace pro vizualizaci dat pro různé oddělení Cumberland County pomocí JavaScriptové knihovny Leaflet. Všechny tyto aplikace používají standardní projekci/dlaždicové schéma WGS84 Web Mercator Auxiliary Sphere. Toto se používá v Google Maps, ArcGIS Online a dalších hlavních webových mapových službách.
A i když to funguje dobře, zajímalo mě, zda existuje způsob, jak vytvářet webové mapy pomocí vlastní projekce a dlaždicového schématu, které používáme pro naše dlaždicové mapové služby. Ukázalo se, že ano - ale vyžaduje to několik pluginů.
Prvním je Proj4js, který „transformuje souřadnice bodů z jednoho souřadnicového systému do druhého, včetně transformací datumu.“
Druhým je Proj4Leaflet, který „umožňuje používat projekce a CRS, které nejsou zabudované v Leafletu.“ CRS znamená Coordinate Reference System.
Rozhodl jsem se sdílet postup použití Esri REST služeb s vlastními projekcemi/dlaždicovými schématy v Leaflet webové mapě. Příklad najdete na CodePen.
Při učení jsem vycházel z příkladu ze stránek dokumentace Esri Leaflet. Pro tuto ukázku použijeme službu Existing Land Use z roku 2015 od Cumberland County.
Služba používá projekci Pennsylvania State Plane South (ft), známou také jako EPSG 2272. Prostorovou referenci vaší Esri REST služby najdete na URL koncového bodu služby.
Informace o konkrétní projekci můžete získat na webu Spatial Reference. Zde je ukázka toho, co získáte z tohoto webu pro konstrukci vlastního CRS pro vaši službu:
+proj=lcc +lat_1=40.96666666666667 +lat_2=39.93333333333333 +lat_0=39.33333333333334 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs
Potřebujeme také informace o samotné službě, včetně počátku a rozlišení pro každou úroveň přiblížení. Tyto informace jsou rovněž k nalezení na URL koncového bodu služby. Níže je obrázek ukazující, kde se tyto informace nacházejí:

Zde je ukázka kódu pro vytvoření vlastního CRS pro službu Existing Land Use:
var spcPACrs = new L.Proj.CRS(
'EPSG:2272',
'+proj=lcc +lat_1=40.96666666666667 +lat_2=39.93333333333333 +lat_0=39.33333333333334 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs', {
origin: [-1.192142E8, 1.461669E8],
resolutions: [
260.41666666666663,
86.80555555555556,
43.40277777777778,
20.833333333333332,
10.416666666666666,
6.944444444444444,
4.166666666666666,
2.083333333333333,
1.0416666666666665,
0.5208333333333333
]
});<<EMOJI_0>
Nyní, když jsme vytvořili vlastní CRS, můžeme sestavit službu. Použijeme <\/SPAN>třídu tiledMapLayer z knihovny Esri Leaflet. Je třeba poznamenat, že ve výchozím nastavení lze tuto třídu použít pouze pro dlaždicové mapové služby využívající projekci WGS84 Web Mercator Auxiliary Sphere. Pro použití jiných projekcí/dlaždicových schémat potřebujete výše zmíněné pluginy.<\/SPAN>
var ccpaELU = L.esri.tiledMapLayer({
url: '//gis.ccpa.net/arcgiswebadaptor/rest/services/ELU/MapServer',
maxZoom: 8,
minZoom: 0,
continuousWorld: true,
attribution: 'Cumberland County',
errorTileUrl: '//downloads2.esri.com/support/TechArticles/blank256.png'
}).addTo(map);<<EMOJI_1>
Některé možnosti, které můžete nastavit, jsou minimální a maximální úrovně přiblížení pro službu. Čísla by měla odpovídat Level ID číslům nalezeným na URL koncového bodu služby. Můžete také nastavit obrázek pro místa, kde se dlaždice nepodaří načíst. Protože tiledMapLayer dědí od Leafletovy třídy tileLayer , všechny její možnosti lze použít i s tiledMapLayer.
Doufám, že jste tento článek našli užitečný. Pro zobrazení tohoto příkladu v akci navštivte prosím stránku CodePen.