martes, 15 de diciembre de 2015

ESRI CITYENGINE. PLANIFICACIÓN URBANA VIRTUAL.

  • Es sorprendente como durante la última década la información geográfica ha sufrido su propia e inevitable "transformación digital" de un modo desbordante. Petabytes de recursos útiles para nuestro quehacer cotidiano se hallan almacenados/disponibles en la nube como "open data"; somos nosotros quienes tenemos que conocer su existencia, ubicación y saber explotarlos a nuestra conveniencia. 
  • La necesidad del aprovechamiento masivo de esta información se hace patente en la utilización de software para la planificación/ordenación urbana de municipios. Puedes imaginar la potencia combinada de un SIG con un modelo virtual de tu localidad donde sea posible ejecutar posteriormente todas las tareas de geoprocesamiento y análisis espacial típicos ?¿?¿ --> esto es posible a partir del uso de CITYENGINE.
Ciudad medieval creada por un usuario de CITYENGINE.
  • Se trata de una aplicación específica para generar ciudades virtuales en 3D incluyendo todos los elementos existentes en una ambiente urbano. Dicho modelado se consigue mediante la utilización de reglas/rules (que son programables/paramétricas) teniendo como base cartografía/datos existentes en 2D. Los tipos de objetos creados pueden ser edificios (fachadas,pisos, techos), calles, vegetación, mobiliario, vehículos/peatones y su densidad.
  • El esquema de trabajo/proceso que debe seguirse a la hora de acometer un trabajo de ésta índole es siempre el mismo:
  • A partir de la información geográfica disponible en la web (sitios descritos en otros posts; como CNIG y SEC) podemos proveer (elaboración/formateo de datos en ARCGIS) un MDT05 en formato raster (TIF) de la zona de estudio, una ortofoto de la PNOA máxima actualidad (TIF), *.shp con cartografía catastral (con atributos aplicables al proceso "procedural"), datos de vías de comunicación descargados de OPENSTREETMAP.ORG y modelos 3d disponibles en 3DWAREHOUSE (de google) para integrar todo ello en nuestra "TALAVERA VIRTUAL".
ORTOFOTO PNOA, MDT05-LIDAR y BLOQUES CATASTRO
  • Los modelos 3D  que sean importados han de transformarse a formato *.DAE (Collada) u *.OBJ (Wavefront Technologies) para implementarlo en el espacio de trabajo de CITYENGINE; eso es sencillo utilizando Sketchup (*. skp es el formato nativo de los objetos de la web 3Dwarehouse) o Rhino (mi favorito).
Bloque/edificio en C/ Antonio Nebrija nº6 y Palacio de Villatoya (zona centro_Talavera)
  • La red viaria y otros eventos geográficos podemos importarlos en formato *.osm; aunque si es cierto que es necesario depurar/seleccionar gran cantidad de datos para que sean útiles a nuestra elaboración final..
  • Según la web de OpenStreetMap (OSM): “OpenStreetMap es un mapamundi libre, creado por gente como tú”. OpenStreetMap no es exclusivamente una base de datos -> hay gran cantidad de proyectos de software libre y propietario desarrollados específicamente para editarla. Se basan en la API de OSM. También hay proyectos de software libre y propietario desarrollados para permitir la visualización y navegación en mapas creados con los datos de OSM --> si no lo conocéis pégale un ojo, es la pera ¡¡¡.
Web Openstreetmap Exportación Datos Geograficos + *.OSM importado en ArcGIS
  • El interface del software no es demasiado intuitivo; esto es debido a que su utilización está enfocada a usuarios avanzados con conocimientos de SIG y programación en Python ( y es que la dificultad principal es desarrollar las rules/scripts en este sistema de programación para poder aplicárselas a nuestros datos geográficos; normalmente geometría 2D con tablas de atributos asociadas --> como es un *.shp). 
Vista Interface 0
  • Las ventanas  principales de CITYENGINE en configuración de trabajo son: 
  1. Scene editor permite la gestión de la escena, capas y objetos importados/creados.
  2. CGA rule editor /editor de reglas Python en formato gráfico y texto.
  3. Navigator para administrar y visualizar archivos en el espacio de trabajo.
  4. 3D viewport  o vista de cámara de la escena (isométrica/perspectiva).
  5. Inspector permite la vista detallada y edición de los objetos seleccionados.
  6. Console de salida de texto impreso (editor) y Log para mensajes/warnings de CityEngine; consola de informacion  de CGA rules -> errores de compilación y similares, reporte de operaciones en segundo nivel.
  • Tras la  creación de un proyecto nuevo se presenta una estructura dividida en subdirectorios (el "wizard" de creación/seguimiento de inicio es muy básico); donde destacan (ver viñeta inferior):
  • Asset: donde son almacenados texturas (facades) y modelos que están referenciados (se las llama) desde las reglas de generación CGA.
  • Data, images y maps: Directorios de importación de los datos elaborados/base del modelo tridimensional. Ficheros *.shp, *.osm, ortofotos, DEM, MDT´s etc.
  • Models: Ubicación de los modelos 3d singulares importados (edificios emblemáticos/monumentales, iconos, etc)
  • Rules: Donde se proveen los scripts de Python aplicables al resto de datos importados.
Vista Interface 1.
  • No preocuparse en exceso; porque la gente de ESRI es inteligente (por eso venden tanto¡¡¡) y sabe que hay muchos profesionales que no tienen el tiempo o la capacidad de desarrollar según que algoritmos (y menos liarse a programar); por lo que adjunta una serie de librerías (rules y texturas) disponibles para su inmediata utilización. Aquí un ejemplo de GIF animado; variando algunos parámetros de la regla Python (International City.cga) de creación/generación en una parcela que ocupa un campo de futbol junto a la Universidad de Castilla La Mancha:

  • Suponiendo que los atributos ( BBDD/GIS) en las tablas de nuestras parcelas urbanas indiquen el status/clasificación de cada una (zona residencial, apartamentos, zona abierta/ajardinada etc) u otro dato característico; pueden relacionarse total o parcialmente con los parámetros de la rule, realizando generaciones prácticamente desatendidas de la totalidad del modelo.
  • A partir de los datos vectoriales (shapefile) proporcionados por la web del catastro creé un pequeño script  para clasificar el campo CONSTRU (de formato: -I+XI - significa que edificio es de 11 alturas + 1 sótano) en otro llamado Alturas (numero de pisos). Para facilitar el proceso de extrusión de huellas/parcelas en CITYENGINE posteriormente creé otro campo  Longitud (altura total en metros del inmueble o Alturas x 3m). 
  • Una muestra que describe la utilidad de lo anteriormente expuesto se observa en la generación del modelo 3D del edificio mas alto de la ciudad (18 alturas). Building for footprint.cga (importada del proyecto ESRI.lib) es la regla que utilizamos; puede generar el edificio a partir de tan solo su planta (sin mas datos) con numerosas variantes. Como queremos una representación lo mas realista posible le podemos proporcionar ciertos campos ya inventariados/contrastados como numero de pisos, altitud (para extrusión), forma de la cubierta, uso del edificio (texturas aleatorias) --> en definitiva enlazar el código Python con datos reales.
Representación del Edificio de la Paz- 18 alturas.
  • Comentar que la generación de la red viaria/carreteras urbanas en esta aplicación desde los datos de OPENSTREETMAP es un infierno infernal, habría de tratarse totalmente a parte y realizar una discretización brutal, ya que al tratarse de documentación "opensource" donde han intervenido varios "elementos/satelites" en su elaboración, su posible uso es un laberinto pero de los buenos (al menos en el caso que nos ocupa, igual otros municipios están oK).
  • De todos modos existen una serie de herramientas específicas para la creación, manipulación, edición y suavizado de la geometría en viales (ver imagen inferior). De este modo pueden extraerse las redes arteriales de OSM y "ajustarlas" hasta que su visualización sea la adecuada (personalmente me ha resultado lo mas complejo de tratar).
Edición  geometría de calles. BBDD OSM
  • El detalle de nuestra ciudad virtual puede ser lo realista que nosotros queramos; es cuestión de seguir añadiendo datos/modelos de manera paulatina (y desde luego gestionarlo en equipos informáticos lo suficientemente potentes).Se trata de un trabajo escalar; debería seguirse completando con la evolución urbana o el crecimiento de la localidad (podría ser una gran herramienta de análisis para la oficina técnica en ayuntamientos municipales). Una pequeña muestra del trabajo definitivo (se añade la ubicación del antiguo recinto amurallado árabe sobre la ciudad actual).
  • La información generada debe poder compartirse; para ello el software permite enlazar con varios formatos standard y aplicaciones complementarias:
  • Collada, Wavefront OBJ y Fbx son las extensiones mas comunes y fiables de exportación/importación de escenas/modelos tridimensionales.
  • Podemos generar un fichero *.kml para implementar nuestras creaciones en Google Earth.
  • Mediante la conversión a ficheros ESRI Geodatabase toda la información gráfica+atributos puede transferirse a ARCGIS for Desktop o ArcScene (podemos realizar las modificaciones oportunas y revertir de nuevo dichos datos). De facto Arcgis 10.2; ya incorpora 2 herramientas en su Toolbox de 3D Analyst específicas (denominada Cityengine --> no las he probado; la verdad).
  • Finalmente podemos publicar dicho material en el portal de ARCGIS OnLine  y a través de Web Cityengine Web Viewer chequear/compartir el modelo e incluso realizar visitas virtuales, comparación de escenarios etc. El problema con esta herramienta como con todos los visores web es que no "traga" modelos muy pesados y en ocasiones plantea problemas con ciertas geometrías o texturas (es un poco tedioso hasta que consigues efectuar la representación como es debido).
  • Abajo un vista de la zona deportiva (campo de fútbol) junto a la universidad donde se ha proyectado una futura urbanización; así como edificio de apartamentos y residencial (vista en Google Earth).

  • La misma escena compartida en Cityengine WEB VIEWER da mucho mas juego al ser totalmente interactiva (tal y como hemos descrito en puntos anteriores).

  • Bueno el que quiera experimentar que se enrede a ello, espero que lo visto os halla resultado curioso --->  no olvidéis compartir vuestros modelos¡¡¡¡¡.
  • Hasta la próxima.
  • By Rah.

3 comentarios:

  1. Amigo, yo necesito extruir con ese campo de nivel de piso y longitud, como obtengo ese Algoritmo o Python para modelar en mi ejercicio? por favor y gracias.

    ResponderEliminar
  2. Hola...ya cambio mi pregunta, como enlazo el codigo con mi SHP?

    ResponderEliminar
    Respuestas
    1. Buenas Fredy:

      Tienes que crear el campo/atributo "alturas" (yo también creé otro que era alturas x 3m = longitudes) en el SHP de las huellas catastrales. Para ello te recomiendo que utilices ARCGIS.
      Hay gran número de tutoriales de como ejecutar/enlazar un script en Python para modificar los campos de tu tabla/BBDD del SHP (https://www.youtube.com/watch?v=32fkxQ5hNsU).
      Lógicamente depende de la información que traiga tu shp de catastro con respecto a las plantas/sotanos de las fincas...

      Suerte.

      Eliminar