GeoJSON
Juan David Gonzlez Trujillo
Qu es GeoJSON?
Formato libre estndar para codificar e intercambiar objetos
espaciales y sus caractersticas utilizando notacin de JavaScript.
ariacin de JS!" para la transmisin de datos espaciales #como
TopoJS!"$.
%lternativa a G&' debido a (ue no se ve afectado por el Cross-
Domain.
)n objeto GeoJS!" puede representar una *eometra+ un fenmeno
#feature$ o una coleccin de fenmenos.
"o necesariamente representa entidades fsicas del mundo real+
tambi,n se -a usado en aplicaciones mviles #ruteo$.
.s mantenido por desarrolladores en internet #"o es oficial$.
Soporte
GeoJS!" es soportado por soft/are de S0G como1
2G0S
!pen'ayers
'eaflet
&apServer
Geofor*e soft/are
GeoServer
GeoDjan*o
GD%'
Safe Soft/are F&.
3artoD4
5osible uso con PostGIS y &apni6
%507s de Goo*le y 8a-oo
Objetos de GeoJSON
- Puede tener cualquier nmero de pares de nombre/valor
(tambin llamados miembros).
- Debe tener un miembro con el nombre type . El valor de
este fenmeno es una cadena de texto que det ermina el tipo
de obeto !eo"#$%&
!eometr'a( fenmeno (feature) o coleccin de
fenmenos.
- Puede tener un miembro opcional crs ( cu)o valor debe
ser un obeto que *a+a referencia al #istema de ,eferencia
por -oordenadas.
El crs por defecto es .!#/0. Es posible indicar el crs por su
nombre (por eemplo( cdi+o E1#! (European 1et roleum
#urve) !roup)) o mediante un lin2 (direccin 3,4).
Geometra
!bjeto donde los 9type: estn definidos como1
;5oint;+ ;&ulti5oint;+ ;'ineStrin*;+ ;&ulti'ineStrin*;+
;5oly*on;+ ;&ulti5oly*on;+ o ;Geometry3ollection;
Todos menos 9 Geometry 3ollection: + deben tener un
miembro con el nombre 9 coordinates:.
'as coordenadas pueden ser un array (ue define una
posicin #5oint$+ un array de posiciones #'ineStrin* o
&ulti5oint$+ un array de array de posiciones #5oly*ons+
&ulti'ineStrin*s$+ o un array multidimensional de
posiciones #&ulti5oly*on$.
Geometra
)na posicin est representada por un array de n<meros con
al menos dos elementos #=+y$
.l orden de los elementos debe se*uir el orden =+ y+ z.
3ual(uier n<mero de elementosadicionales estn permitidos.
{ "type": "MultiPolygon",
"coordinates": [
[[[102.0, 2.0, [10!.0, 2.0, [10!.0, !.0, [102.0, !.0, [102.0, 2.0,
[[[100.0, 0.0, [101.0, 0.0, [101.0, 1.0, [100.0, 1.0, [100.0, 0.0,
[[100.2, 0.2, [100.", 0.2, [100.", 0.", [100.2, 0.", [100.2, 0.2
#
Fenmeno (Feature)
!bjeto donde el type es 9 Feature:1
> $e%e tener un miembro con el nombre 9geometry: . Donde
*eometry es un objeto de *eometra o un valor nulo JS!".
> $e%e tener un miembro con el nombre 9properties:.
Donde properties es un objeto #cual(uier objeto JS!" o un
valor nulo JS!"$.
> Si un fenmeno tiene un identificador com<n+debe ser
incluido como un miembro del objeto Feature con el nombre
de 9I$: .
Feature collection
{
"type": "&eature'ollection",
"crs": {
"type": "(PSG",
"properties": {
"code": )!2*,
"coordinate+order": [1, 0
#,
",eatures": [
"type": "&eature",
"id": "id0",
"geometry": {
"type": "-ineString",
"coordinates": [
[102.0, 0.0, [10!.0, 1.0, [10).0, 0.0,
[10..0, 1.0
#,
"properties": {
"prop0": "/alue0",
"prop1": "/alue1"
"type": "&eature",
"id": "id1",
"geometry": {
"type": "Polygon",
"coordinates": [
[100.0, 0.0, [101.0, 0.0, [101.0, 1.0,
[100.0, 1.0, [100.0, 0.0
#,
"properties": {
"prop0": "/alue0",
"prop1": "/alue1"
#
Cone!n "on PostG#S
0mportar la *eometra de un objeto a 4D1 ogr2ogr 0 S1+
Geom&romGeo2S34
*eoJS!" ? S-ape ? 4D
ogr2ogr 5, "(S6I S7ape,ile" cities.s7p cities.geo8son 3G6Geo2S34
*eoJS!" ? 4D #JS!" version @ A.B$
S(-('1 S1+9s1e:t;S1+Geom&romGeo2S34;<{"type":"Point","coordinates":[5)".2!).*,20.12!).#<== 9s >?t@
>?t
555555
P3I41;5)".2!).* 20.12!).=
$apas en %a &eb
)tilizando 'eaflet
Despu,s de *enerar un mapa se aCade el arc-ivo GeoJS!"
Dscript typeE:te=tFjavascript:srcE:[Link]:@DFscript@
'.*eoJson#countries$.addTo#map$G
Cone!n "on PostG#S
0mportar la *eometra de un objeto a la 4D1
geo8son2pgsAl
)sa el 9I$: como la llave primaria.
5or el momento solo soporta *eometras de tipo 5unto.
Cone!n "on PostG#S
.=portar la *eometra de un objeto de la 4D1 S1+9sGeo2S34
cur E [Link]#$
s(l E ;;;S.'.3T S1+9sGeo2S34#/ay$ from planetHosmHline
IJ.K. osmHidELMNOPLPPG;;;
cur.e=ecute#s(l$
print [Link]-one#$QAR
S;type;1;'ineStrin*;+;coordinates;1
[Link]+[Link]...
'n%a"es de !nters
-ttp1FF*[Link]*F*eojson>spec.-tml
13P32S34 -ttps1FF*it-ub.comFmbostoc6Ftopojson