Web Mapping con Extjs, GeoEXt, Openlayers, PHP y postgreSQL
Saludos amigos. Antes que nada me gustaria saber si no hay inconvenientes de mostrar algunos de los avances logrados en este proyecto. No utilizo unicamente extjs, por ello la consulta.
No soy programador, por lo que cualquier comentario o correccion sera bien recibida.
A la espera de su respuesta los saludo desde Argentina.
Buen dia Ivanc. Hace rato que no entraba por aquí. Vi tu mensaje por las notificaciones via mail. Por el momento no dispongo de mucho tiempo para armar algo parecido a un tutorial.
Tengo muchas notas sueltas. Pero si me dices que parte te interesa, tal vez pueda darte una mano. Con que estas trabajando tú?
Saludos, Javier.
Hola javidiazacdc, estoy muy interesado en aprender lo que hiciste en este post
http://foro.quizzpot.com/discussion/806/web-mapping-con-extjs-geoext-openlayers-php-y-postgresql/p1
Si es posible un tutorial mejor (por pedir que no quede.. ;-p ), yo si soy programador y en la parte de programación te puedo ayudar si crees que te hace falta que se revise algo de tu código o estás atascado en algo.
Un saludo,
Ivan
Javidiaz ac-dc
Se mira muy bien correr. Mi pregunta es, ¿subriás todo el codigo? me gustaría aprender de lo que has realizado.
Otra pregunta. ¿Que pasos recomendarías para crear algo similar?
El proyecto surge como necesidad de contar con un Sistema de Informacion Geografica (GIS) accesible via web, en principio (por cuestiones de seguridad) funciona en intranet. Pero si quieren replicarlo es muy sencillo.
Las librerias Extjs, Geoext y OpenLayers corren bajo Apache instalado con wamp (por ahora en windows, pronto migraremos todo a Ubuntu).
La base de datos utilizada es PostgreSQL 8.4 con la extension Postgis.
Para publicar los mapas se utilizara Geoserver el cual corre sobre Tomcat (conectado al Apache).
El sistema cuenta basicamente de un TreePanel que permite visualzar las capas cargadas, es posible seleccionar la capa base que uno quiera utilizar (google maps, open street map). Las capas de informacion propias se cargan desde un gridpanel, lo que nos permite elegir la capa que necesitemos y luego removerla si ya no fuese necesaria.
La informacion se encuentra georeferenciada y guardada en la base de datos (tambien se pueden publicar archivos shapefile) y publicada desde geoserver.
¿Como puedo hacer para mostrar imagenes que acompañen lo que les cuento?. O debo attacharlas?
se agradece que compartas, a los que lo descarguen y no puedan abrirlo solo deben agregarle la extensión .rar
Perdon, pense que los archivos se habian subido pero hubo un error.
Sigo sin poder atachar los archivos.
Me da este error:
File upload failed. Reason:
(qgis.html) Uploaded file type is not allowed.
Como hago para compartir mis archivos??
Buenas. Disculpas por el retraso.
Archivo qgis.html:
Se cargan las librerias necesarias. Si aun no lo hicieron deben descargar Openlayers (ya esta por la version 2.9) y GeoExt. Y ubicarlas en su servidor junto a Extjs.
En este punto lo que les puede dar algun de cabeza es la key de google maps. La que figura en el archivo esta creada para mi url http://192....., si corren en localhost no deberia haber problemas.
Tambien cargamos la capa de openstreet map. Y por ultimo nuestro archivo (en mi caso qgis.js).
Archivo qgis.js
La parte interesante es el codigo:
Este es el grid que muestra nuestros servicios WMS publicados con Geoserver.
var grid = new Ext.grid.GridPanel({
title: "Available WMS Layers",
store: new GeoExt.data.WMSCapabilitiesStore({
url: "http://192.168.34.120/geoserver/ows?SERVICE=WMS&REQUEST=GetCapabilities", autoLoad: true
}),
width: 800,
height: 150,
viewConfig: {forceFit: true},
columns: [
{header: "Name", dataIndex: "name", sortable: true},
{header: "Title", dataIndex: "title", sortable: true},
{header: "Abstract", dataIndex: "abstract"}
],
bbar: ['->', {
text: "Add Layer",
handler: function() {
grid.getSelectionModel().each(function(record) {
var clone = record.clone();
clone.get("layer").mergeNewParams({
//reproject: true,
format: "image/png",
transparent: true
});
mapPanel.layers.add(clone);
});
}
}]
});
El objeto map. Aqui deberias leer algo sobre proyecciones. Cualquier duda me preguntan.
map = new OpenLayers.Map("map",
{
units: 'm',
maxExtent: new OpenLayers.Bounds(-20037508.34, -20037508.34, 20037508.34, 20037508.34),
maxResolution: 156543.0339,
numZoomLevels: 20,
projection: new OpenLayers.Projection("EPSG:900913"),
displayProjection: new OpenLayers.Projection("EPSG:4326")
});
He tratado de acomodar mi codigo. Por que a medida que se van haciendo pruebas aveces queda codigo suelto.
Esta es basicamente la estructura del sistema. He quitado todas las herramientas (navigate, zoom, info, dibujo, layer manager, y la herrmienta que permite ver en una ventana google earth y sincronizar con google maps), simplemente para limpiar codigo, en el proximo post empiezo a agregar herramientas.
Aclaracion: el zoom shift + click izq y arrastrar para abrir ventana. Para navegar click izq manteniendo apretado y arrastrar.
Seguramente me estan quedadndo cosas pendientes. Espero puedan replicarlo y cualquier consulta estoy a su disposicion.
Si hace falta alguna aclaracion de como georeferenciar la informacion a guardar en la base de datos. o como publicar con Geoserver, me avisan y hacemos una introduccion de esos pasos.
Me parece muy interesante tu aplicación, de hecho recordé un proyecto al que hace años quiero incarle el diente. :-?
¿Conoces a alguien que pueda responder esta pregunta? Comparte el link en Twitter o Facebook
Es necesario registrarse para poder participar en el foro! Si ya tienes una cuenta puedes entrar y comentar en este foro.