GEODATABASES
armazenando e explorando dados geográficos
LUIGI TAVOLARO
www.linkedin.com/in/LuigiTavolaro
@LuigiTavolaro
Luigi Tavolaro
https://github.com/LuigiTavolaro
LUIGI TAVOLARO
Bacharel Ciência da Computação
Mestre Engenharia de Produção Foco Pesquisa Operacional
LUIGI TAVOLARO
Dev .Net e outras coisas mais
LUIGI TAVOLARO
Developers SP
LUIGI TAVOLARO
https://www.facebook.com/natalnerdbrasil/
AGENDA
• Geoprocessamento (Fundamentos)
• Dados Vetoriais
• Banco de dados geográficos
• DEMO SQL SERVER SPATIAL (demonstração de funções)
• DEMO C#
• PostGIS
• Modelando o banco de dados com ArgoCaseGeo
O QUE É GEOPROCESSAMENTO
DADOS GEOGRÁFICOS
DADOS VETORIAIS
DATUM E SRID (EPSG)
• Refere-se ao modelo matemático teórico da
representação da superfície da Terra ao nível do mar
utilizado pelos cartógrafos numa dada carta
ou mapa.
• A importância do datum prende-se à necessidade
de projetar um corpo curvo e a 3 dimensões (a
Terra), num plano a duas dimensões mantendo no
entanto os cruzamentos em ângulos retos dos
meridianos e paralelos (o mapa)
Cilíndrica Cônica Plana
COORDENADAS
• Geográficas
• Grau decimal
COORDENADAS
• Planas
• Coordenadas UTM
• Divisão em Fuso
CURIOSIDADE 1
• Qual Datum é utilizado nos GPS do celular?
• WGS84 também conhecido como WGS 1984, EPSG:4326 e foi
criado pelo Sistema de defesa dos EUA.
• Ele foi criado devido à necessidade para prover de forma
correta, informações para os aparelhos de GPS.
REPRESENTAÇÃO VETORIAL
• SHAPEFILE criado pela empresa ESRI
• SHP
• DBF
• SHX
• Keyhole Markup Language (KML) – baseado no XML
• GeoJSON – baseaado em JSON
BANCO DE DADOS GEOGRÁFICOS
• O Banco de Dados Geográficos (BDG), suporta
feições geométricas em suas tabelas.
• Este tipo de base com geometria oferece a
possibilidade de análise e consultas espaciais.
• É possível calcular nestes casos, por exemplo, áreas,
distâncias e centróides, além de realizar a geração
de buffers e outras operações entre as geometrias.
BDS QUE SUPORTAM GEO
• SpatiaLite extende Sqlite com tipos espaciais,
funções e utilidades.
• IBM DB2 Spatial Extender
• Oracle Spatial
• Microsoft SQL Server Spatial Data
BD QUE SUPORTAM GEO
• PostgreSQL com extensão PostGIS
• MySQL
• Neo4j
• MongoDB - Guarda as informações utilizando
GeoJSON
location: {
type: "Point",
coordinates: [-73.856077, 40.848447]
CREATE TABLE Estados
(
Id int NOT NULL PRIMARY KEY,
UF char(2) NOT NULL,
Latitude float(53) NOT NULL,
Longitude float(53) NOT NULL
)
CREATE TABLE Aluno
(
Id int NOT NULL PRIMARY KEY,
DataNascimento varchar(max) NOT NULL,
Nota varchar(max) NOT NULL,
)
CREATE TABLE Estados
(
Id int NOT NULL PRIMARY KEY,
UF char(2) NOT NULL,
geom geography NOT NULL
)
CREATE SPATIAL INDEX [SPATIAL_Estados] ON [dbo].[Estados]
(
[geom]
)USING GEOMETRY_GRID
WITH (BOUNDING_BOX =(0, 0, 1, 1), GRIDS =(LEVEL_1 =
MEDIUM,LEVEL_2 = MEDIUM,LEVEL_3 = MEDIUM,LEVEL_4 = MEDIUM),
CELLS_PER_OBJECT = 16
TIPOS ESPACIAIS SQL SERVER
• Geography
• Geometry
http://www.usp.br/nereus/?dados=brasil
MÉTODOS ESTÁTICOS
CREATE TABLE geographypoints (
Location geography
);
INSERT INTO geographypoints VALUES
(geography::Point(51, 1, 4326)),
(geography::Point(52, –2, 4326)),
(geography::Point(50.7, –1.1, 4326));
MÉTODOS ESTÁTICOS
Geometria Método Estático
Point STPointFromText()
LineString STLineFromText()
Polygon STPolyFromText()
MultiPoint STMPointFromText()
MultiLineString STMLineFromText()
MultiPolygon STMPolyFromText()
GeometryCollection STGeomCollFromText()
CREATE TABLE SpatialTable
( id int IDENTITY (1,1),
GeomCol1 geometry,
GeomCol2 AS GeomCol1.STAsText() );
GO
INSERT INTO SpatialTable (GeomCol1)
VALUES (geometry::STGeomFromText('LINESTRING (100 100, 20
180, 180 180)', 0));
INSERT INTO SpatialTable (GeomCol1)
VALUES (geometry::STGeomFromText('POLYGON ((0 0, 150 0,
150 150, 0 150, 0 0))', 0));
GO
INTERSEÇÃO
DECLARE @geom1 geometry;
DECLARE @geom2 geometry;
DECLARE @result geometry;
SELECT @geom1 = GeomCol1 FROM SpatialTable WHERE id = 1;
SELECT @geom2 = GeomCol1 FROM SpatialTable WHERE id = 2;
SELECT @result = @geom1.STIntersection(@geom2);
SELECT @result.STAsText();
BUFFER
DECLARE @point geometry = geometry::Point(12, 7, 0);
SELECT @point.STBuffer(5);
SELECT @point.STArea();
SELECT @point.STBuffer(5).STArea();
DISTÂNCIA
DECLARE @Paris geography = geography::Point(48.87, 2.33,
4326);
DECLARE @Berlin geography = geography::Point(52.52, 13.4,
4326);
SELECT @Paris.STDistance(@Berlin);
DECLARE @g geography
DECLARE @h geography
SELECT @g = geom from Brasil where UF = 'RN'
SELECT @h = geom from Brasil where UF = 'RJ'
select @g.STDistance(@h)/1000
DISTÂNCIA
DECLARE @g geography = 'POINT(-46.646313 -23.536483)';
SELECT top (10) geom.STDistance(@g), name FROM Aeroportos
ORDER BY geom.STDistance(@g);
ÁREA
DECLARE @g geography
SELECT @g = geom from Brasil where UF = 'AC'
select @g.STArea()/1000
UNION
DECLARE @g geography
DECLARE @h geography
SELECT @g = geom from Brasil where UF = 'RN'
SELECT @h = geom from Brasil where UF = 'RJ'
select @g.STUnion(@h)
CRUZAMENTO
DECLARE @g geometry;
DECLARE @h geometry;
SET @g = geometry::STGeomFromText('LINESTRING(0 2, 2 0)', 0);
SET @h = geometry::STGeomFromText('LINESTRING(0 0, 2 2)', 0);
SELECT @g
SELECT @h
SELECT @g.STCrosses(@h);
DE UM ARQUIVO GML
DECLARE @g geometry;
DECLARE @x xml;
SET @x = '<LineString xmlns="http://www.opengis.net/gml">
<posList>100 100 20 180 180 180</posList> </LineString>';
SET @g = geometry::GeomFromGml(@x, 0);
SELECT @g;
FORÇAR UM SRID
ALTER TABLE dbo.customer
ADD CONSTRAINT enforce_customerlocation_srid4199
CHECK (CustomerLocation.STSrid = 4199);
FORÇAR UM TIPO DE GEOMETRIA
ALTER TABLE dbo.customer
ADD CONSTRAINT enforce_customerlocation_point
CHECK (CustomerLocation.STGeometryType() = 'POINT');
Se duas instâncias espaciais não tiverem o mesmo SRID, os
resultados de um método de Tipo de Dados geometry ou
geography usado nas instâncias retornará NULL.
@geom1.STIntersects(@geom2) = 1;
CURIOSIDADE 2
• Todas as Funções começam com ST
• OGC Métodos: Métodos Espaciais tem que seguir as
especificações que foram definidas pelo Open
Geospatial Consortium e tem como prefixo ST (uma
abreviação para spatiotemporal)
POSTGIS
LAYOUT DE TÍTULO E CONTEÚDO
TIPOS GEOGRÁFICOS
• Geography
• Geometry
• Raster
• Topologia
DOWNLOAD SHAPEFILE
• http://mapas.mma.gov.br/i3geo/datadownload.htm
• http://www.geomapas.com.br/
• http://openstreetmapdata.com/data/land-polygons
• http://download.bbbike.org/osm/bbbike/
• http://www.naturalearthdata.com/downloads/10m-cultural-vectors/
ARGOCASEGEO
http://www.dpi.ufv.br/projetos/argocasegeo/
http://graltec.com/datum-x-projecoes-cartograficas-como-relaciona-las-em-gis/
https://docs.microsoft.com/pt-br/sql/relational-databases/spatial/spatial-reference-identifiers-srids
https://www.lapig.iesa.ufg.br/lapig/cursos_online/gvsig/a_projeo_utm.html
http://www.andersonmedeiros.com/shapefile-esri/
http://www.andersonmedeiros.com/shp-para-postgis-via-qgis/
https://www.red-gate.com/simple-talk/sql/t-sql-programming/introduction-to-sql-server-spatial-data/
http://www.ufrgs.br/engcart/Teste/refer_exp.html
http://blog.droneng.com.br/geodesia-sistemas-de-referencia-e-de-coordenadas/
http://www.andersonmedeiros.com/geotecnologias-parte2/
http://www.sql-server-helper.com/sql-server-2008/convert-latitude-longitude-to-geography-point.aspx
Sql4 devs geodatabases
Sql4 devs geodatabases

Sql4 devs geodatabases