Datos espaciales en SQL Server: parte 2 - importar datos

by fnunez 2. diciembre 2011 18:21

Continuamos con el soporte para datos espaciales de SQL Server. En la primera parte vimos una breve introducción a los tipos geometry y geography, en la que explicábamos cómo almacenar este tipo de información en nuestra base de datos y cómo llevar a cabo operaciones sencillas mediante las funciones espaciales que ofrece SQL Server. En esta segunda parte veremos cómo importar información geográfica desde una fuente externa, centrándonos en los datos en formato shapefile. Para llevar a cabo esto utilizaremos la herramienta gratuita Shape2SQL.

Fuentes de información espacial

En la Red existen multitud de empresas y organismos, tanto públicos como privados, que ofrecen todo tipo de información geográfica. La calidad de esta información varía mucho, pero en general no resulta complicado obtener datos fiables sobre núcleos urbanos, carreteras, ríos, fronteras, etc. Si combinamos esta información con nuestros propios datos podemos obtener resultados muy interesantes como por ejemplo distribuciones geográficas de ventas, seguimiento de envíos, etc.

Algunos de los de organismos internacionales desde los que podemos descargar información espacial gratuita son por ejemplo la Organización de las Naciones Unidas (ONU) a través de su portal Geo Data, o la Agencia Europea de Medio Ambiente (EEA) mediante su servicio de datos y mapas.  

En el caso de España, una de las principales fuentes es el Instituto Geográfico Nacional (IGN). Se trata de un organismo público que, entre otras cosas, es el responsable de la elaboración del Atlas Nacional de España. El IGN ofrece un amplio catálogo de ficheros con información geográfica actualizada que podemos descargar de manera gratuita para uso no comercial.

ESRI Shapefile

La información espacial que podemos encontrar en Internet se puede presentar en diferentes formatos: ficheros de texto, XML, KML, shapefile, etc. De todos ellos, el formato shapefile desarrollado por la empresa ESRI es uno de los más populares. Diseñado originalmente para la aplicación Arc View GIS, se ha convertido en un estándar para el intercambio de información geográfica. Se trata de un formato vectorial multiarchivo (incluye ficheros con extensiones: SHP, SHX, DBF y PRJ) en el que se definen puntos, líneas y polígonos. Esta información puede ser importada a una tabla de SQL Server como veremos a continuación.

Importar datos con Shape2SQL

Shape2SQL es una excelente herramienta gratuita desarrollada por Morten Nielsen que nos permite importar directamente ficheros shapefile a SQL Server de manera sencilla. A continuación veremos paso a paso cómo hacer esto.

Lo primero que haremos será descargar la aplicación Shape2SQL desde el siguiente enlace. El resultado de esta descarga será un fichero ZIP con diferentes utilidades entre ellas Shape2SQL. Esta aplicación no requiere instalación, podremos ejecutarla directamente una vez descomprimido el fichero.

A continuación descargaremos la información geográfica que nos interese. Para ilustrar este artículo vamos a trabajar con la base cartográfica nacional BCN200 del IGN, disponible para su descarga gratuita para uso no comercial previo registro en su sitio Web. Los ficheros shapefile correspondientes se pueden obtener desde el centro de descargas en el apartado "búsqueda avanzada" seleccionando como producto BCN200. En este ejemplo vamos a trabajar con los datos disponibles para la provincia de Cádiz.

El siguiente paso será ejecutar la aplicación Shape2SQL para realizar la importación de datos. La primera vez que ejecutemos esta herramienta tendremos que indicar el servidor SQL Server 2008 y la base de datos en el que guardaremos la información espacial importada. 

En la siguiente ventana indicaremos el shapefile que queremos importar, en nuestro caso será el fichero BCN200_0101S_LIM_ADM.shp cuyo contenido son los límites administrativos de la provincia de Cádiz. En esta pantalla encontramos además una serie de opciones entre las que destacan el nombre de la tabla, el nombre y tipo de columna espacial (en este caso será geography) y el SRID que en en el caso del fichero BCN200 será el correspondiente a ETRS89 (identificador 4258). Una vez completada esta información procederemos a la importación pulsando el botón "Upload to Database".

 

 Cuando finalice el proceso podremos comprobar que los datos se han cargado correctamente haciendo una sencilla consulta como la siguiente:

SELECT geog FROM limites_cadiz

Una vez ejecutada, si seleccionamos la pestaña "Resultados Espaciales" podremos ver la representación de los datos espaciales importados del fichero shapefile.

Trabajando con los datos importados

Aparte del shapefile con los límites administrativos, el archivo ZIP que hemos descargado del IGN contiene otros ficheros con información relativa a carreteras, núcleos urbanos, etc. Estos ficheros pueden importarse del mismo modo que vimos en el apartado anterior, cada uno en su tabla correspondiente. Si importamos por ejemplo los datos correspondientes a poblaciones y carreteras podremos realizar consultas como la que se muestra a continuación, cuyo resultado será un mapa en el que se superponen las tres capas importadas (límites administrativos, poblaciones y carreteras nacionales).

SELECT geog,etiqueta from limites_cadiz
UNION ALL
SELECT geog,etiqueta from nucleos_urbanos_cadiz
UNION ALL
SELECT geog,etiqueta from carreteras_nacionales_cadiz

 

La información que acabamos de importar también nos sirve para poner en práctica las funciones espaciales que vimos en el artículo anterior. Así por ejemplo, si ejecutamos la siguiente consulta obtendremos el área en kilómetros cuadrados de los diferentes términos municipales de la provincia.

SELECT etiqueta, geog.STArea()/1000000 AS area
FROM limites_cadiz
ORDER BY area DESC

 

Comentarios (17) -

cantresolve csgo United States
21/10/2017 21:40:21 #

Great, google took me stright here. thanks btw for post. Cheers!

Jody German United States
18/01/2018 2:04:44 #

<p>This is definitely to cute. Thanks for sharing.</p>|

Too many cooks United States
16/04/2018 15:48:36 #

These two better settle their score now before everything ends up burnt!

Drew Fodge United States
16/05/2018 6:09:30 #

Hurrah! In the end I got a website from where I know how to in fact take helpful data regarding my study and knowledge.|

Lupe Dalke United States
16/05/2018 20:27:42 #

I absolutely love your blog and find almost all of your post's to be exactly I'm looking for. Do you offer guest writers to write content available for you? I wouldn't mind writing a post or elaborating on a few of the subjects you write concerning here. Again, awesome weblog!|

Graham United States
24/05/2018 5:44:32 #

<p>833713 608036This is a good blog. Keep up all the work. I too love to blog. This is great everyone sharing opinions 51199</p>

Hortensia Fauerbach United States
24/05/2018 11:10:00 #

I ought to appear into this and it would be a difficult job to go over this completely here.

Francis United States
05/06/2018 7:33:00 #

I  rattling  lucky  to find this website   on bing, just what I was looking  for : D  too   saved to favorites .

marketing strategies United States
29/06/2018 8:04:41 #

I think that what you said made a ton of sense. But, what about this? suppose you were to create a awesome headline? I am not saying your content isn't good, however suppose you added something to possibly get folk's attention? I mean is a little boring. You ought to peek at Yahoo's home page and watch how they create news titles to get viewers to click. You might add a video or a pic or two to get readers interested about what you've written. In my opinion, it might bring your posts a little bit more interesting.  

how to market United States
03/07/2018 2:17:31 #

I comment when I especially enjoy a article on a blog or if I have something to contribute to the discussion. Usually it is triggered by the sincerness displayed in the article I looked at. And on this post. I was moved enough to post a leave a responsea response ;) I actually do have a couple of questions for you if it's allright. Could it be just me or does it seem like a few of the remarks appear like they are written by brain dead people? :-P And, if you are writing at other sites, I would like to follow anything new you have to post. Could you make a list every one of all your public sites like your twitter feed, Facebook page or linkedin profile?  

illustration United States
05/07/2018 19:31:08 #

I usually do not write a comment, however I looked through some remarks on this page. I actually do have a couple of questions for you if it's okay. Is it simply me or does it look like a few of these comments look as if they are coming from brain dead visitors? :-P And, if you are writing on additional social sites, I'd like to keep up with you. Could you list of all of all your social pages like your twitter feed, Facebook page or linkedin profile?  

why use wordpress United States
06/07/2018 18:32:43 #

I believe everything posted was actually very logical. But, consider this, what if you wrote a catchier title? I am not saying your content is not solid., but what if you added a post title to maybe get people's attention? I mean is a little boring. You should peek at Yahoo's home page and note how they write news titles to get people to open the links. You might add a related video or a pic or two to grab readers interested about everything've written. Just my opinion, it might make your posts a little livelier.  

wordpress expert United States
07/07/2018 19:40:14 #

I think what you said made a bunch of sense. However, think on this, what if you were to write a killer title? I ain't saying your information isn't solid., but what if you added a headline to maybe get a person's attention? I mean is a little plain. You might glance at Yahoo's front page and watch how they create post titles to grab viewers to click. You might add a related video or a picture or two to grab people excited about everything've written. In my opinion, it could make your posts a little livelier.  

illustration United States
09/07/2018 2:50:46 #

I drop a comment when I especially enjoy a article on a site or I have something to valuable to contribute to the conversation. It is triggered by the fire displayed in the post I looked at. And after this post. I was actually moved enough to write a thought Wink I actually do have 2 questions for you if you don't mind. Is it only me or do a few of the responses appear like they are written by brain dead individuals? :-P And, if you are writing at additional online sites, I'd like to follow you. Could you make a list all of all your communal pages like your linkedin profile, Facebook page or twitter feed?  

Barbie United States
18/07/2018 15:40:55 #

'Si tu aimes tu vivras plus de choses, tu comprendras plus de choses, tu pardonneras plus de choses, tu construiras plus de choses, tu surmonteras plus d'obstacles, tu régleras plus de problèmes, tu seras écouté et considéré partout où tu poseras le pied. Si tu n'aimes rien ni personne tu ne vivras rien de tout cela.'

Sbobet United States
28/08/2018 10:46:43 #

I love it {when people|when individuals|when

multiple rbx download United States
31/08/2018 4:03:56 #

you are really a just right webmaster. The site loading pace is incredible. It kind of feels that you are doing any unique trick. Moreover, The contents are masterpiece. you've done a magnificent task on this matter!

Acerca de este blog

Soy ingeniero de software. En este blog recopilo artículos, notas y enlaces que considero interesantes.

Archivo