Tengo un mapa que quiero imprimir una vez que el usuario abre algunas capas. Las capas son geoservidor wms y la capa base es OSM.
Sé que geoserver tiene un módulo de impresión (que está instalado y funciona porque recibo respuesta de geoserver / pdf / info.json? Var = printCapabilities
Lo que no entiendo es cómo lo uso para imprimir el mapa actual con capas visibles.
He visto el ejemplo de GeoExt (mapfish) pero no me ayudó a entender.
Actualización 1: he generado la siguiente URL por código:
http://77.235.53.170/geoserver/pdf/print.pdf?spec={%22units%22:%22degrees%22,%22srs%22:%22EPSG:4326%22,%22layout%22:%22A4%22,%22dpi%22:%22300%22,%22mapTitle%22:%22This%20is%20the%20map%20title%22,%22comment%22:%22This%20is%20the%20map%20comment%22,%22resourcesUrl%22:%20%22http://77.235.53.170/img%22,%22layers%22:[{%22baseURL%22:%22http://77.235.53.170/geoserver/Lehavim/wms%22,%22opacity%22:1,%22singleTile%22:true,%22type%22:%22WMS%22,%22layers%22:[%22%D7%A7%D7%95%20%D7%9E%D7%99%D7%9D%22],%22format%22:%22image/jpeg%22,%22styles%22:[%22%22]}],%22pages%22:[{%22center%22:[3875254.1134954,3680894.557955],%22scale%22:32000,%22rotation%22:0}]}
y obtengo PDF vacío (solo con título) ... ¿Qué podría estar mal?
openlayers-2
geoserver
printing
Alophind
fuente
fuente
Respuestas:
El proceso de impresión de Geoserver implica dos pasos.
Primero en el lado del servidor , debe configurar su archivo yaml, llamado config.yaml. Consulte la documentación detallada en la página de documentación del módulo de impresión MapFish .
Una vez hecho esto, el segundo paso es para el lado del cliente . Teniendo en cuenta que está utilizando capas abiertas para su front-end, para obtener la lista de capas visibles, necesitará un bucle simple con verificación de visibilidad, por ejemplo
Ahora tiene que pasar esto a su url de impresión. p.ej
Por supuesto, tendrá que hacer cambios relevantes en la URL. Luego asigne esta URL a su botón de impresión y luego llame a una función de clic pragmáticamente.
¡¡¡Y hecho!!!
fuente
Si usted es un usuario de Chrome, una forma rápida y sencilla es Google Cloud Print , pero está diseñado para imprimir toda la página web, pero puede usar una pantalla completa e imprimir eso.
Otra ventaja es que puede imprimir en una impresora conectada en cualquier lugar donde haya impresoras registradas en su cuenta, por lo que la impresión móvil está disponible para su PC de escritorio con una impresora conectada, o cualquier PC e Impresora que haya registrado en su cuenta de Google. Es compatible con impresoras heredadas e impresoras de red específicamente diseñadas para trabajar con Google Cloud Print.
fuente
Creo que vas por el camino correcto con geoserver y el plugin mapfish. Es lo que uso para imprimir para mis capas base WMS y OSM. Sin embargo, hay una cosa a tener en cuenta si va a utilizar este método. Si desea que sus mapas impresos se escalen correctamente, no podrá usar OSM directamente desde ese sitio, ya que la proyección en la que se encuentra no se escala correctamente. Deberá cargar los datos en una base de datos y usar un SRS diferente.
Dicho esto, le daré un resumen rápido sobre cómo hacer que la impresión funcione con el complemento mapfish en geoserver.
Primero deberá descargar el complemento mapfish e instalarlo en su instalación de geoser. Cuando hice esto por primera vez, ese paso no parecía estar documentado en ninguna parte de los tutoriales o demos para imprimir, así que fue un tiempo antes de que lo descubriera. También fue algo difícil encontrar el complemento.
Esta página muestra las instrucciones de Geoserver sobre cómo instalar el complemento y usarlo. Básicamente se descompone en:
Ok, ahora que el complemento está instalado, deberá con fi gurar el complemento, lo que se hace modificando el archivo config.yaml del que habla 'thelastray' en su respuesta anterior. El archivo debe crearse cuando se reinicia GeoServer y se encuentra en la siguiente ubicación:
Hay muchas opciones para esto, por lo que deberá revisar la documentación en el sitio web de Mapfish aquí.
El siguiente paso es crear una aplicación que use este complemento para imprimir. Un ejemplo de una aplicación que utiliza esta configuración para imprimir utilizando GeoExt se puede encontrar aquí . Si desea ver más ejemplos, mire en esta página.
Esperemos que eso te ayude a comenzar.
fuente
Visite http://dev.openlayers.org/sandbox/camptocamp/canvas/openlayers/examples/exportMapCanvas.html, espero que sea de ayuda.
fuente
"Map into paper" puede ser más que simple "ajustar la imagen a la página" ... La historia de la Cartografía se escribió en papel, y hoy en día algunos productos cartográficos aún exigen papel.
Hoy en día, el papel es PDF : olvídate de EPUB o "imprime por navegador", están esperando estándares, CSS3, etc., son para el futuro ... Y los productos cartográficos de buena calidad (papel) necesitan XSLT-FO o CSS2 . Con (X) HTML + CSS2 puede producir un buen PDF (!) ... Ese HTML no es "para el navegador", es para una herramienta de "generación de PDF" (que genera PDF sobre la marcha o sin conexión).
La única "herramienta profesional para generar un buen PDF con HTML + CSS2" que conozco es PrinceXML : probé con "imágenes sobre la marcha" (SVG, JPG y PNG) de los protocolos WFS y WMS , y con OpenLayers , y funciona muy bien (!)
fuente
Acabo de hacer esto:
Html2canvas.js descargado ( https://github.com/niklasvh/html2canvas/releases )
Descargado html2canvas-proxy.php ( https://github.com/adjdred/html2canvas-proxy-php )
Los instalé en mi servidor + ref .js en la etiqueta y en mi JS:
Me da un .png del mapa actual, con el que puedo hacer lo que sea, toma menos de un segundo en mi PC.
Mini
fuente
Es posible imprimir directamente en la web con las herramientas que tiene, pero eso requeriría algunas habilidades que no posee.
Mi solución para usted sería usar QGIS . Al instalar el complemento OpenLayers en QGIS, puede acceder a la capa OSM que desee y agregar la capa Geoserver WMS (agregando una capa WMS).
Luego puede imprimir con el aspecto que desee y más con la ayuda de esta poderosa herramienta. Todo lo mejor, Tudor.
PD. Sé que mi respuesta probablemente no sea la que esperaba, pero funcionará y proporciona más personalización de impresión que cualquier solución web.
fuente