2 votos

¿Definición del sistema de referencia de coordenadas con rotación en GeoServer?

Estoy utilizando GeoServer y tengo una capa en EPSG:900913 ("Google Mercator").

Necesito "rotar" el mapa alrededor de cierto punto (digamos, 1500000, 7000000 ) en cierto grado (digamos, 30 grados en el sentido de las agujas del reloj). ¿Cómo podría definir un sistema de coordenadas basado en EPSG:900913 ?

GeoServer angle opción de proveedor no funciona para mis propósitos ya que necesito embaldosar el mapa más tarde.

Según tengo entendido, mi única opción es definir un sistema de coordenadas propio. Para GeoServer necesitaría definirlo en forma WKT . La configuración parece sencilla, pero tengo una dificultad para definir mi SIR girado en WKT .

Me pregunto cómo aplicar una rotación alrededor de cierto punto en un CRS como Google Mercator:

PROJCS["WGS84 / Google Mercator", 
  GEOGCS["WGS 84", 
    DATUM["World Geodetic System 1984", 
      SPHEROID["WGS 84", 6378137.0, 298.257223563, AUTHORITY["EPSG","7030"]], 
      AUTHORITY["EPSG","6326"]], 
    PRIMEM["Greenwich", 0.0, AUTHORITY["EPSG","8901"]], 
    UNIT["degree", 0.017453292519943295], 
    AXIS["Longitude", EAST], 
    AXIS["Latitude", NORTH], 
    AUTHORITY["EPSG","4326"]], 
  PROJECTION["Mercator_1SP"], 
  PARAMETER["semi_minor", 6378137.0], 
  PARAMETER["latitude_of_origin", 0.0], 
  PARAMETER["central_meridian", 0.0], 
  PARAMETER["scale_factor", 1.0], 
  PARAMETER["false_easting", 0.0], 
  PARAMETER["false_northing", 0.0], 
  UNIT["m", 1.0], 
  AXIS["x", EAST], 
  AXIS["y", NORTH], 
  AUTHORITY["EPSG","900913"]]

Mis preguntas, en concreto:

  • ¿Cómo escribir un WKT que transforme un SIR existente? Creo que necesito un nuevo PROJCS envolviendo una existente y añadiendo una PROJECTION cláusula.
  • ¿Cómo puedo averiguar el id de proyección (como Mercator_1SP más arriba) y los parámetros necesarios (el PARAMETER )?
  • ¿Puedo "referenciar" EPSG:900913 en CRS WKT en lugar de copiar y pegar todo el archivo PROJCS ¿cláusula?

5voto

Shadock Puntos 409

Vale, ya lo he resuelto.

Es posible aplicar una transformación afín a algún SIR existente utilizando FITTED_CS . A continuación se muestra un ejemplo de rotación de 60 grados en sentido antihorario y el movimiento:

FITTED_CS["BPAF", 
  PARAM_MT["Affine", 
    PARAMETER["num_row", 3], 
    PARAMETER["num_col", 3], 
    PARAMETER["elt_0_0", -0.5], 
    PARAMETER["elt_0_1", -0.8660254037844386], 
    PARAMETER["elt_0_2", 1487816.0], 
    PARAMETER["elt_1_0", 0.8660254037844386], 
    PARAMETER["elt_1_1", -0.5], 
    PARAMETER["elt_1_2", 6886579.0]], 
  PROJCS["WGS84 / Google Mercator", 
    GEOGCS["WGS 84", 
      DATUM["World Geodetic System 1984", 
        SPHEROID["WGS 84", 6378137.0, 298.257223563, AUTHORITY["EPSG","7030"]], 
        AUTHORITY["EPSG","6326"]], 
      PRIMEM["Greenwich", 0.0, AUTHORITY["EPSG","8901"]], 
      UNIT["degree", 0.017453292519943295], 
      AXIS["Longitude", EAST], 
      AXIS["Latitude", NORTH], 
      AUTHORITY["EPSG","4326"]], 
    PROJECTION["Mercator_1SP"], 
    PARAMETER["semi_minor", 6378137.0], 
    PARAMETER["latitude_of_origin", 0.0], 
    PARAMETER["central_meridian", 0.0], 
    PARAMETER["scale_factor", 1.0], 
    PARAMETER["false_easting", 0.0], 
    PARAMETER["false_northing", 0.0], 
    UNIT["m", 1.0], 
    AXIS["x", EAST], 
    AXIS["y", NORTH], 
    AUTHORITY["EPSG","900913"]], 
  AUTHORITY["EPSG","8011113"]]

Sin embargo, he encontrado un error en la versión actual de GeoTools (class cast exception when parsing this WKT). Lo he parcheado y también confirmaré la corrección.

2voto

SpliFF Puntos 214

Puedes definir un sistema local de coordenadas rotadas como expliqué aquí:

¿Utilización de un sistema de coordenadas personalizado en ArcGIS Desktop?

El punto central y la rotación deben definirse en grados.

Tu idea de envolver una proyección con otra no está definida en PROJ.4. Puedes intentarlo, pero no esperes que funcione.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X