Archive for the ‘SIG’ Category

Ajustar geometrías

Thursday, October 21st, 2010

En algunos casos es necesario agustar puntos o polígonos porque hay diferencias entre, por ejemplo, las calles de google y las calles en formato shape que nos dió nuestro cliente. En ese caso se puede usar la función translate para arreglar el problema de la siguiente forma:

update direccionesdecalle set the_geom = ST_Translate(the_geom,-0.0005,0.0005);

En este caso la corrección sería de 0.0005 grados ya que estamos trabajando en wgs84 (srid 4326).
Espero les sirva.
Saludos.

Agregar proyección 900913

Wednesday, October 20th, 2010

Bueno gente acá les dejo el insert a utilizar si quieren agregar la proyección de google a postgis.

INSERT into spatial_ref_sys (srid, auth_name, auth_srid, srtext, proj4text) values (900913 ,'EPSG',900913,'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"]], NIT["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"]] |','+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m 
+nadgrids=@null +no_defs');

Saludos.

Crear un polígonos a partir de puntos

Wednesday, October 13th, 2010

Hace un par de días que empecé con esta tarea, que al principio parecía muy fácil. Es más seguro que ustedes piensan en este momento que es fácil. Pero es realmente algo bastante difícil de lograr, de hecho no encontré nada que sirva más que un par de select anidados con un makepolygon al final. Creo que este es el triunfo del mes, o al menos hasta ahora. Por tal motivo, y porque no quiero volver a ver esto por un tiempo, por favor no me pregunten sobre esto, si lo entienden me alegro mucho y espero que les ayude, caso contrario lean de nuevo.

(more…)

geonetwork en debian plesk

Wednesday, August 25th, 2010

Hace un par de días uno de mis clientes de hosting me pidió para hostear un geonetwork, hace un tiempo atrás me lo había pedido otro cliente, en esa oportunidad no lo hice yo si no un colega, la solución de mi colega fue agregar un Virtualbox donde hosteaba windows, y ahí dentro poner el geonetwork, en su momento me pareció disparatado tener que llegar a esto, pero parecía una mejor idea que instalar entorno gráfcio.
Hoy ya casí dos años después me puse a buscar la mejor forma de hacer esto y econtré como hacerlo sin instalar X11 ni Xwindows ni nada en linux. Acá va el post, espero que los disfruten.

(more…)

pmapper en plesk debian

Thursday, August 19th, 2010

Hola gente, les voy a mostrar como instalar un pmapper en plesk debian, lo primero que tenemos que hacer es instalar el paquete que viene, es lo mismo que bajarlo desde la red, pero me gusta más hacerlo así.

(more…)

Busquedas sin acentos en postgres

Thursday, August 5th, 2010

Gene muy rápidamente les voy a decir como solucioné este tema, el problema es que quiero “linkear” por nombre pero en distintas tablas difieren los acentos. Entonces como indican en este post, creamos una función:

CREATE OR REPLACE FUNCTION unaccent_string(text)
RETURNS text
IMMUTABLE
STRICT
LANGUAGE SQL
AS $$
SELECT translate(
    $1,
    'áãäåāăąÁÂÃÄÅĀĂĄèééêëēĕėęěĒĔĖĘĚìíîïìĩīĭÌÍÎÏÌĨĪĬóôõöōŏőÒÓÔÕÖŌŎŐùúûüũūŭůÙÚÛÜŨŪŬŮ',
    'aaaaaaaaaaaaaaaeeeeeeeeeeeeeeeiiiiiiiiiiiiiiiiooooooooooooooouuuuuuuuuuuuuuuu'
);
$$;

Me gustó la escrita en sql porque su compatibilidad y sencilles sobre todo, ahora solo tenemos que hacer algo como:

update regiones set the_geom = (select the_geom from barrios where unaccent_string(barrios.nombre) = unaccent_string(regiones.nombre)) where idtiporegiones = 11;

Y con eso debería andar. Espero les sirva.

Una zona para el usuario

Thursday, August 5th, 2010

Bueno, siguiendo mas o menos el esquema de mi último post, y de los anteriores relacionados. La idea de este post es crear un trigger que cuando se genere un nuevo usuario guarde en la tabla regiones una zona, la zona va a ser su dirección “expandida” 400 metros. Veámos cómo quedaría eso..

(more…)

Registrar cambios en tablas con un trigger genérico

Friday, July 23rd, 2010
Bueno gente, cuando empecé a investigar este tema ví muchas versiones, algunos que decían que era imposible hacerlo con pgsql, otros que sí o sí había que usar plperl, otros que solo con tablelog, en fin.. los que me conocen saben que cuanto más difícil parece la tarea más ganas me dan de hacerla.
El escenario es el siguiente, tenemos varías tablas en una base de datos, y queremos que cuando se hagan cambios en esa tabla se cree otra tabla que guarde estos cambios.

Bueno gente, cuando empecé a investigar este tema ví muchas versiones, algunos que decían que era imposible hacerlo con pgsql, otros que sí o sí había que usar plperl, otros que solo con tablelog, en fin.. los que me conocen saben que cuanto más difícil parece la tarea más ganas me dan de hacerla.El escenario es el siguiente, tenemos varías tablas en una base de datos, y queremos que cuando se hagan cambios en esa tabla se cree otra tabla que guarde estos cambios.

(more…)

Calcular un área a partir de un punto

Friday, July 23rd, 2010

Hola gente, esto que estoy por publicar no tendrá mucho sentido para algunos, es una abstracción de la función buffer. Pero el problema es que buffer no es una función muy recomendada para zonas grandes por la cantidad de CPU y RAM que usa. Es por eso que la encapsulé en otra función, luego publicaré aquí mismo la función completa.

(more…)

Postgis tuning

Thursday, July 22nd, 2010
Bueno cómo el título lo indica les voy a enseñar a tunear un poco las consultas, sobre todo porque si no lo hacen las consultas que se usan en este post, serán muy lentas.
(more…)