Pasos:
1. Descargarse e instalarse la version odbc mas actual para PostgreSQL de: http://www.postgresql.org/ftp/odbc/versions/msi/psqlodbc_08_04_0100.zip
2. Crear un oriden de datos de tipo “System DNS” en Panel de control->Herramientas administrativas->Origenes de datos ODBC, que conecte a su servidor PostgreSQL y nombrarlo por ejemplo “Pucallpa” (base de datos espacial con extensión PostGIS de ejemplo)
Figura 1: conexión ODBC a una base de datos PostgreSQL
3. Correr el siguiente código en el SQL Server Management Studio Express:
EXEC master.dbo.sp_addlinkedserver @server = N'Pucallpa', @srvproduct=N'Microsoft OLE DB Provider for ODBC Driver', @provider=N'MSDASQL', @datasrc='Pucallpa', @location='localhost', @catalog='pucallpa'
Este código es para añadir un servidor vinculado a SQL Server.
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'Pucallpa', @useself=N'False', @locallogin=NULL, @rmtuser='postgres', @rmtpassword='xxx'
5. Ejecutar el siguiente código SQL desde SQL Server 2005:
SELECT * FROM OpenQuery(Pucallpa, 'select cod_lote from lotes')
Algo que me pidieron hacer hace un tiempo como consulta fue: saber el numero de habitantes en los lotes que están a 500 metros de un mercado de la ciudad de Pucallpa (llamado Mercado Nro 02)
sum(nro_habitantes)
FROM OpenQuery(Pucallpa, 'select * from mercadolimit5001000') a
left join tb_unidad_catastral u on substring(u.ucnumero,7,8) = a.codlote
where a.radio = 500
Figura 2: Lotes a 500 mts del Mercado N° 2
Para saber cuantos lotes estan a una distancia de otro lote (en este caso el mercado n° 2) hago la siguiente consulta en PostgreSQL con extensión espacial PostGIS:
Figura 3: Consulta espacial en la base de datos “pucallpa” de PostgreSQL
select l.* from lotes l, lotes a where( st_distance(l.geometria, a.geometria)<=1000 and a.cod_lote in ('01040001', '01040002', '01040003', '01040004', '01040005'))
- La tabla mercadolimit5001000 a sido creada con la finalidad de almacenar los datos de la consulta anterior, se ejecuto el sigueinte SQL en postgres:
Si desean ver un poco mas a modo de consulta y capas sobre la base de datos espacial que se utilizo en este post esta alojada en el Servidor de Mapas de la Municipalidad Provincial de Coronel Portillo en la que eh sido colaborador directo, ubicado en la siguiente direccion: http://201.230.96.134/pucallpa/mapa.phtml
Proximos Articulos:
- retomando PHP Zend Framework demo
- Google Maps con PHP aplicado a un Sistema de Posicionamiento Global