Tengo una colección de viejas Idaho state highway mapas en formato GeoTiff. La proyección que estos mapas han sido georeferenciados en es una transversal de mercator proyección, llamado IDTM83 (Idaho Transversal de Mercator - NAD 83). La proyección se define como:
+proj=tmerc +lat_0=42 +lon_0=-114 +k=0.9996 +x_0=2500000 +y_0=1200000 +ellps=GRS80 +unidades=m +no_defs
La proyección es básicamente una modificación de la proyección UTM en la que se compensa por el hecho de que el estado de Idaho está dividida por zonas UTM 11 y 12. Mi meta es servir a los mapas en el nativo de IDTM83 de proyección usando Tilestache y el Folleto. Yo soy capaz de servir a estos mismos los rásteres que ya se han proyectado en el mundo de mercator, pero la proyección distorsiona mucho de la línea de trabajo desde el mapa original.
Ha habido algunos recursos útiles en internet sobre cómo servir a los datos proyectados utilizando Tilestache y Prospecto, aquí:
- https://gist.github.com/skogsmaskin/6452343
- http://blog.thematicmapping.org/2012/07/using-custom-projections-with-tilecache.html.
El mapnik de configuración para uno de mis mapas raster parece:
<Map background-color="steelblue"
srs="+proj=tmerc +lat_0=42 +lon_0=-114 +k=0.9996 +x_0=2500000 +y_0=1200000 +ellps=GRS80 +units=m +no_defs"
maximum-extent="2205517,1134032,2834671,2040323">
<Style name="raster-style">
<Rule>
<RasterSymbolizer/>
</Rule>
</Style>
<Layer name="idaho-1947" status="on" srs="+proj=tmerc +lat_0=42 +lon_0=-114 +k=0.9996 +x_0=2500000 +y_0=1200000 +ellps=GRS80 +units=m +no_defs">
<StyleName>raster-style</StyleName>
<Datasource>
<Parameter name="type">gdal</Parameter>
<Parameter name="file">GIS/IdahoMaps/1947_geo_idtm.tif</Parameter>
<Parameter name="format">tiff</Parameter>
</Datasource>
</Layer>
</Map>
Usando Python, soy capaz de generar mapas de uso de las cajas de contorno de la IDTM sistema de coordenadas con el Mapnik de la API. Así que sé que Mapnik no es el problema.
Mi Tilestache de configuración es bastante básico:
{
"cache": {"name": "Test","verbose":"True"},
"layers": {
"idaho-1947": {
"provider": {"name": "mapnik", "mapfile": "./mapnik.xml"},
"projection": "TileStache.Goodies.Proj4Projection:Proj4Projection('+proj=tmerc +lat_0=42 +lon_0=-114 +k=0.9996 +x_0=2500000 +y_0=1200000 +ellps=GRS80 +units=m +no_defs',[5545984, 2772992, 1386496, 693248, 346624, 173312, 86656, 43328, 21664, 10832, 5416, 2708, 1354, 677, 338.5, 169.25, 84.625, 42.3125, 21.15625, 10.578125, 5.2890625, 1])"
}}
Mi folleto visor es muy básica, como en el Enlace #2 arriba:
var crs = L.CRS.proj4js('SR-ORG:6677', '+proj=tmerc +lat_0=42 +lon_0=-114 +k=0.9996 +x_0=2500000 +y_0=1200000 +ellps=GRS80 +units=m +no_defs', new L.Transformation(1, -432000, -1, 2040323));
crs.scale = function(zoom) {
return 1 / (234.375 / Math.pow(2, zoom));
};
var map = new L.Map('map', {
crs: crs,
layers: [
new L.TileLayer('http://localhost:8080/idaho-1947/{z}/{x}/{y}.png', {
minZoom: 0,
maxZoom: 4,
continuousWorld: true
})
],
center: new L.LatLng(45, -116),
zoom: 3,
continuousWorld: true
});
Tengo la intención de perfeccionar esta vez puedo conseguir los mapas para mostrar, pero el ejemplo es el uso de UTM de los datos y de las escalas deben ser bastante similares. Estoy atrapado aquí. El uso de JavaScript ejemplos en los enlaces de arriba, me puede mostrar cualquiera de los mapas - sólo el azul de fondo. Yo sé lo que estoy tratando de hacer es posible en ArcGIS Server, pero realmente me gustaría aprovechar algunas de las herramientas OpenSource.