Agora vamos adicionar ao mapa uma camada de edifícios. Para isso descompacte o arquivo BuildingFootprints.zip que baixado anteriormente.
Nós vamos carregar os edifícios no banco de dados como uma tabela espacial, mas antes disso, nós temos de descobrir o qual o “SRID” usar.
Para descobrir o SRID basta abrir o arquivo BuildingFootprints.prj, veja:
PROJCS [ "NAD_1983_StatePlane_Oregon_South_FIPS_3602_Feet_Intl" , GEOGCS [ "GCS_North_American_1983" , DATUM [ "D_North_American_1983" , SPHEROID [ "GRS_1980" , 6378137.0 , 298.257222101 ]], PRIMEM [ "Greenwich" , 0.0 ], UNIT [ "Degree" , 0.0174532925199433 ]], PROJECTION [ "Lambert_Conformal_Conic" ], PARAMETER [ "False_Easting" , 4921259.842519685 ], PARAMETER [ "False_Northing" , 0.0 ], PARAMETER [ "Central_Meridian" , - 120.5 ], PARAMETER [ "Standard_Parallel_1" , 42.33333333333334 ], PARAMETER [ "Standard_Parallel_2" , 44.0 ], PARAMETER [ "Latitude_Of_Origin" , 41.66666666666666 ], UNIT [ "Foot" , 0.3048 ]]
É muito claro que a informação que estamos procurando é esta “NAD_1983_StatePlane_Oregon_South_FIPS_3602_Feet_Intl”, mas qual número “SRID” devemos usar?
Para descobrir basta ir para ao site Prj2EPSG (http://prj2epsg.org), e procurar pela informação acima, e você vai obter a resposta que é 2270.
Agora, usando o shp2pgsql podemos carregar os dados em uma tabela chamada buildings:
shp2pgsql -s 2270 -D BuildingFootprints.shp buildings | psql -d lidar
Os nossos dados LIDAR estão todos em coordenadas geográficas (EPSG: 4326) e nós vamos ter de integrá-los com a camada buildings (EPSG:2270) para envitar problemas, sendo assim vamos utilizar a função ST_Transform do PostGIS pra isso:
-- Update SRID and transform all geoms ALTER TABLE buildings ALTER COLUMN geom TYPE geometry(MultiPolygon,4326) USING ST_Transform(geom, 4326); -- Rename to area column to area ALTER TABLE buildings RENAME COLUMN shape_st_1 TO shape_area; -- Index the table CREATE INDEX buildings_gix ON buildings USING GIST (geom);
Para agilizar a nossa análise, vamos eliminar todos os edifícios que não estão contidos na área do nosso dado LiDAR.
-- Find the LIDAR extent SELECT st_extent(pa::geometry) FROM medford; -- BOX(-122.8874999 42.3125,-122.8749998 42.325) -- Delete unneeded building polygons DELETE FROM buildings WHERE NOT ST_Contains( ST_MakeEnvelope(-122.8874999, 42.3125, -122.8749998, 42.325, 4326), geom);
Agora, é publicar esta camada no GeoServer. Faça a publicação da forma tradicional, apenas na aba Cache desmarque a opção “Criar camada de cache para esta camada” e na aba Publishing altere as informações das propriedade do KML confirme a figura abaixo:
Salve, e então temos agora uma camada visível! Você pode visualizá-la no Google Earth usando o KML reflector do GeoServer.
Quando você ampliar a imagem no Google Earth, vai notar algo estranho sobre nossos edifícios: eles são “lisos”! Queremos edifícios em 3D, como podemos obtê-los? É isso que iremos ver nos próximos posts.