Вы находитесь на странице: 1из 10

CursoscriptingengvSIG2:Manipulacindedatosvectoriales 1

Geometras

2013gvSIGAssociation

2013gvSIGAssociation
EstedocumentosedistribuyeconlalicenciaCreativeCommons
CursoscriptingengvSIG2:Manipulacindedatosvectoriales 2

ndice de contenido
1Geometras.Introduccin.................................................................................................3
2Elconceptodetipoysubtipo............................................................................................3
3Creacindegeometras.....................................................................................................4
4GeometradetipoPunto.FuncincreatePoint...............................................................4
5GeometrasdetipoPolygon.FuncincreatePolygon......................................................5
6GeometradetipoLnea.FuncincreateLine.................................................................6
7GeometradetipoMultipunto.FuncincreateMultiPoint.............................................6
8GeometradetipoMultilnea.FuncincreateMultiLine................................................8
9GeometradetipoMultipolgono.FuncincreateMultiPolygon...................................8
10Operacionescongeometras...........................................................................................9

2013gvSIGAssociation
CursoscriptingengvSIG2:Manipulacindedatosvectoriales 3

1 Geometras. Introduccin
EstainterfazesequivalentealaGM_ObjectespecificadoenlanormaISO19107.Eslaclaserazde
lataxonomaobjetogeomtricoysoportainterfaces comunesatodoslosobjetos referenciados
geogrficamentegeomtricas.
Geometra son conjuntos de posiciones directas en un sistema de coordenadas de referencia
particular.Unageometrapuedeserconsideradocomounconjuntoinfinitodepuntosquesatisface
lasinterfacesdeoperacindeajusteparaunconjuntodeposicionesdirectas.
Unobjetogeomtricoserunacombinacindeunageometradecoordenadasyunsistemade
coordenadasdereferencia.Entodaslasoperaciones,todoslosclculosgeomtricossehaceenel
sistemadecoordenadasdereferenciadelprimerobjetogeomtricovisitada,quenormalmenteesel
objeto cuya operacin est siendo invocado. Objetos devueltos debern estar en el sistema de
coordenadasdereferenciaenelquelosclculossehacenamenosqueseespecifiquelocontrario.

2 El concepto de tipo y subtipo


EngvSIG,eltiponicamentehacereferenciaalaclasedeobjetogeomticodependiendodesus
caractersticasgeomticas,peronoindicasilageometraesen2dimensionesoen3dimensiones,o
sisoportacoordenadaMonolasoporta.Paraellosehacreadoelconceptodesubtipoquesirve
paraindicarladimensindelageometra.
LostiposdegeometrasactualmentesoportadosporgvSIGseencuentrandefinidosen TYPES y
son:
Geometrassimples
AGGREGATE:UnconjuntoquepuedecontenerPuntos,lneasypolgonos
LINE|CURVE:Unageometrarectaocurvacontinuaeindefinidadepuntos.Puede
usarseindistintamentelaconstanteLINEoCURVE,representanelmismotipode
geometra.
POINT:Figurageomtricaadimensional:notienelongitud,rea,volumen,niotro
ngulodimensional.Describeunaposicinenelespacio,determinadarespectodeun
sistemadecoordenadaspreestablecido.
POLYGON | SURFACE: Figura plana compuesta por una secuencia finita de
segmentosrectosconsecutivosquecierranunareginenelespacio.Puedeusarse
indistintamente la constante LINE o CURVE, representan el mismo tipo de
geometra.
Geometrasmultiples
MULTICURVE:Conjuntodelineas(yaseancurvasorectas)
MULTIPOINT:Conjuntodepuntos
MULTISURFACE:Conjuntodesuperficies

LossubtiposdegvSIGseencuentrandefinidosenSUBTYPESyson
D2(GEOM2D):Geometrasde2dimensiones
D2M(GEOM2DM):Geometrasde2dimensionesyconcoordenadaM
D3(GEOM3D):Geometrasde3dimensiones

2013gvSIGAssociation
CursoscriptingengvSIG2:Manipulacindedatosvectoriales 4

D3M(GEOM3DM):Geometrasde3dimensionesyconcoordenadaM

3 Creacin de geometras
DentrodelentornodescriptingengvSIG,sehacreadounmdulo,geom.py,quesimplificaalgunas
delasoperacionesmshabitualesconlasgeometras.
Para crear una geometra debemos importar ennuestro script el mdulo 'geom' einvocar ala
funcincreateGeometryindicandoeltipoyelsubtipodelanuevageometra.
from geom import *

def main():
geometry = createGeometry(POINT, D2)
Lageometraascreadaesunageometradetipopuntoysubtipo2dvaca.

4 Geometra de tipo Punto. Funcin createPoint


Podemoscrearunageometradetipopunto(POINT)mediantelafuncincreatePointdelmdulo
geomquedevuelveunageometraycuyasintaxises:
createPoint([x,y][,subtype])

createPoint(x,y,subtype)
x,double(opcional):ValordelacoordenadaXdelpunto.Elvalorpordefectoes0.0
y,double(opcional):ValordelacoordenadaYdelpunto.Elvalorpordefectoes0.0
subtype, int (opcional): Indica las dimensiones de la geometra y si soporta
coordenadaz.ElvalorpordefectoesD2
Losmtodosmshabitualesdeunageometradetipopuntoson:
getCoordinateAt(dimension):Obtineelvalordelacoordenadaenunadimensinconcreta.
dimension,int:Dimensindelaqueobtenerlacoordenada
getX():DevuelveelvalordelacoordenadaX
getY():DevuelveelvalordelacoordenadaY
setCoordinateAt(dimension,value):Estableceelvalordeunadimensinconcreta
dimension,int:Dimensinsobrelaqueseestablecelacoordenada
value,double:Valoraasignaralacoordenada
setX(x):EstableceelvalordelacoordenadaX
x,double:ValoraasignaralacoordenadaX
setY(y):EstableceelvalordelacoordenadaY
y,double:ValoraasignaralacoordenadaY

Supongamosquetenemosunageometradetipopuntoyqueremosobtenersuscoordenadas"x"e
"y"parapodercrearotrageometradetipopntoconesosvalores.
from geom import *

def main():
#

2013gvSIGAssociation
CursoscriptingengvSIG2:Manipulacindedatosvectoriales 5

#codigo ...

x = point.getX()
y = point.getY()

newPoint = createPoint(x,y)
Paraeditarorecuperarelrestodevaloresdelasotrasdimensioneshayqueutilizarlosmtodos
genricossetCoordinateAtygetCoordinateAt.
Porejemplo,paracrearunpuntoen3dimensionescuyascoordenadassean1,1,5hayqueejecutarel
siguientecdigo:
point = createGeometry(POINT, D3)
point.setCoordinateAt(0, 1)
point.setCoordinateAt(1, 1)
point.setCoordinateAt(2, 5)
OtraopcinpodraserhacerloutilizandolosmtodossetX()ysetY()delageometrayelmtodo
setCoordinateAt(dimension,value)yelpuntoobtenidoseraelmismo:
point = createGeometry(POINT, D3)
point.setX(1)
point.setY(1)
point.setCoordinateAt(2, 5)
Paraobtenerinformacinmscompletasobrelosmtodosdeunageometradetipopunto,puede
consultarseladocumentacindelageometradetipoPunto

5 Geometras de tipo Polygon. Funcin createPolygon


Lafuncin createPolygon delmdulo geom,nospermitecrearunageometradetipopolgono
(POLYGON)deformarpida.
Lasintaxisdelafuncines
createPolygon([subtype])

createPolygon(subtype):Creaunageometradetipopolgono.
subtype, int (opcional): Indica las dimensiones de la geometra y si soporta
coordenadaz.ElvalorpordefectoesD2
Losmtodoscomunesdeestasgeometrasson:
addVertex(point):Aadeunvrticealageometra
point,Point:Geometradetipopuntoaaadiralpolgono
closePrimitive():Cierralageometra
getBounds():RectangleDevuelveellmiterectangulardelageometra.
getCoordinateAt(int index, int dimension): Obtiene el valor de la coordenada de una
dimensinconcreta
getEnvelope():Devuleveelboundingboxmnimodelageometra
getNumVertices():Devuelveelnmerodevrticesdelageometra
getVertex(int index): Devuelve una geometra de tipo punto del vrtice index de la

2013gvSIGAssociation
CursoscriptingengvSIG2:Manipulacindedatosvectoriales 6

geometra
Unejemplo,elsiguientecdigocreaunageometradetipopolgono,alaqueaade4vrtices.
from geom import *

def main():
polygon = createPolygon(D2M)

x = (1, 1, 5, 5)
y = (1, 5, 5, 1)
points = [createPoint(p[0], p[1]) for p in zip(x, y)]
for point in points:
polygon.addVertex(point)

polygon.closePrimitive()

6 Geometra de tipo Lnea. Funcin createLine


Lafuncin createLine delmdulo geom,nospermitecrearunageometradetipolneadeforma
rpida.
Lasintaxisdelafuncines
createLine([subtype])

createLine(subtype):Creaunageometradetipolnea(LINE).
subtype, int (opcional): Indica las dimensiones de la geometra y si soporta
coordenadaz.ElvalorpordefectoesD2
Losmtodoscomunesdeestasgeometrasson:
addVertex(point):Aadeunvrticealageometra
point,Point:Geometradetipopuntoaaadiralpolgono
closePrimitive():Cierralageometra
getBounds():RectangleDevuelveellmiterectangulardelageometra.
getCoordinateAt(int index, int dimension): Obtiene el valor de la coordenada de una
dimensinconcreta
getEnvelope():Devuleveelboundingboxmnimodelageometra
getNumVertices():Devuelveelnmerodevrticesdelageometra
getVertex(int index): Devuelve una geometra de tipo punto del vrtice index de la
geometras

7 Geometra de tipo Multipunto. Funcin createMultiPoint


LasgeometrasMULTIPOINT,songeometrasquecontienenasuvezunacoleccindegeometras
detipoPOINT.
Podemos crear unageometra detipoMULTIPOINTinvocando ala funcin createMultiPoint,
indicandoelsubtipodegeometraquequeremoscrear.

2013gvSIGAssociation
CursoscriptingengvSIG2:Manipulacindedatosvectoriales 7

createMultiPoint([subtype])

createMultiPoint(subtype):CreaunageometradetipoMULTIPOINT
subtype,int:Subtipodelageometra

ElsiguientecdigocreaunageometradetipoMULTIPOINTyaade6geometrasdetipoPOINT
from geom import *

def main():
multipoint = createMultiPoint(subtype=D2)
x = (1, 1, 5, 5, 10, 0)
y = (1, 5, 5, 1, 10, 10)
points = [createPoint(p[0], p[1]) for p in zip(x, y)]
for point in points:
multipoint.addPoint(point)
Tambin pueden aadirse puntos a la geometra MULTIPOINT pasando como parmetros dos
listas,unaconlascoordenadasXyotraconlascoordenadasYdelospuntosquevanaformarla
multigeometra.
from geom import *

def main():
multipoint = createMultiPoint(subtype=D2)
x = (1, 1, 5, 5, 10, 0)
y = (1, 5, 5, 1, 10, 10)
multipoint.setPoints(x, y)
LosmtodosdelaclaseMULTIPOINTson:
addPoint(point)
cloneGeometry()
getEnvelope()
getPrimitivesNumber()
setPoints(xCoords,yCoords)
getPointAt(index)

addPoint(Pointpoint):AadeunageometradetipoPOINTalamultigeometra
Pointpoint:puntoaaadirenlageometra
cloneGeometry():Creaunacopiadeestageometra.
getEnvelope():Devulevelamnimaenvolventedelageometra.
getPrimitivesNumber():Devuleveelnmerodegeometrasqueformanlamultigeometra
setPoints(double[] xCoords, double[] yCoords): Inserta en la multigeometra los puntos
correspondientes.
double[]xCoords:ListadecoordenadasXdelospuntos
double[]yCoords:ListadecoordenadasYdelospuntos
getPointAt(intindex):devuelveelpuntodeunaposicinconcretadelamultigeometra
intindex:posicindelpunto

2013gvSIGAssociation
CursoscriptingengvSIG2:Manipulacindedatosvectoriales 8

8 Geometra de tipo Multilnea. Funcin createMultiLine


LasgeometrasMULTILINE,songeometrasquecontienenasuvezunacoleccindegeometras
detipoLINE.
Podemos crear una geometra de tipo MULTILINE invocando a la funcin createMultiLine,
indicandoelsubtipodegeometraquequeremoscrear.
createMultiLine([subtype])

createMultiLine(subtype):CreaunageometradetipoMULTILINE
subtype,int:Subtipodelageometra

LosmtodosdelaclaseMULTILINEson:
addCurve(line)
getCurveAt(index)
cloneGeometry()
getEnvelope()
getPrimitivesNumber()

addCurve(line):Aadeunanuevalnea(LINE)alamultigeometra
LINEline:Lneaqueseaade
getCurveAt(index):DevuleveunalneaLINEdeunaposicinconcretadelamultigeometra
intindex:Posicindelalneadentrodelamultigeometra
cloneGeometry():Creaunacopiadeestageometra.
getEnvelope():Devulevelamnimaenvolventedelageometra.
getPrimitivesNumber():Devuelveelnmerodegeometrasqueformanlamultigeometra

9 Geometra de tipo Multipolgono. Funcin


createMultiPolygon
Las geometras MULTIPOLYGON, son geometras que contienen a su vez una coleccin de
geometrasdetipoPOLYGON.
Podemos crear una geometra de tipo MULTIPOLYGON invocando a la funcin
createMultiPolygon,indicandoelsubtipodegeometraquequeremoscrear.
createMultiPolygon([subtype])

createMultiPolygon(subtype):CreaunageometradetipoMULTILINE
subtype,int:Subtipodelageometra

LosmtodosdelaclaseMULTIPOLYGONson:
addSurface(polygon)
cloneGeometry()
getSurfaceAt(index)
cloneGeometry()
getEnvelope()

2013gvSIGAssociation
CursoscriptingengvSIG2:Manipulacindedatosvectoriales 9

getPrimitivesNumber()

addSurface(polygon):Aadeunnuevopolgono(POLYGON)alamultigeometra
POLYGONpolygon:Polgonoqueseaade
getSurfaceAt(index):Devuelveunpolgono(POLYGON)deunaposicinconcretadela
multigeometra
intindex:Posicindelalneadentrodelamultigeometra
cloneGeometry():Creaunacopiadeestageometra.
getEnvelope():Devulevelamnimaenvolventedelageometra.
getPrimitivesNumber():Devuelveelnmerodegeometrasqueformanlamultigeometra

10 Operaciones con geometras


area():Devuelveelreadelageometra
centroid():Devuelveelcentroidedelageometra
perimeter():Devuelveelpermetrodelageometra
getEnvelope():DevuelveelBoundingBoxmnimodelageometra
buffer(distance): Devuelve la geometra resultante de calcular un rea alrededor de la
geometrautilzandoladistanciadelparmetro.
distance,double:radiodelbuffer.
convexHull():Devuelvelaenvolventeconvexadelageometra
distance(geometry): Devuelveladistancia mnima entre lageometra ylageometra del
parmetro.
geometry,Geometry:Geometradistante
intersection(other):Devulvelageometraresultantedelainterseccin
other,Geometry:Geometrasobrelaquesebuscalainterseccin
intersects(geometry):DevuleveTruesiambasgeometrasintersectan
geometry,Geometry:Geometraacomprobar
closestPoints(geometry):Devuelvelospuntosmscercanosdelasrespectivasgeometras
geometry[],Geometry:Puntos(POINT)mscercanosdecadaunadelasgeometras

ParamsinformacinpuedeconsultarseelAPIdegeometrasdegvSIG

2013gvSIGAssociation
CursoscriptingengvSIG2:Manipulacindedatosvectoriales 10

gvSIGAssociation
PlazaDonJuandeVillarrasa145,
46001,Valencia(Spain)
RegistroNacionaldeAsociaciones:596206
email:info@gvsig.com
Web:www.gvsig.com

Webdelproyecto:http://www.gvsig.org

DocumentacinrealizadaporVctorAcevedo.

ListasdeDistribucin
Existentreslistasdedistribucinconelobjetodefacilitarlacomunicacinentretodoslosinteresadosenelproyecto
gvSIG.Lasdosprimeras,ladeusuariosyladedesarrolladores,estnprincipalmenteorientadasalacomunidadde
habla hispana, siendo el castellano el idioma preferente a utilizar en las mismas. La tercera de ellas, lista
internacional,estorientadaprincipalmentealrestodecomunidadesylalenguapreferenteautilizareslainglesa.

Listadeusuarios.Aqupodishacerllegarvuestraopininsobreelfuncionamiento:qucosasos
gustaraquesedesarrollaran,dudasenelusodegvSIGytodoaquelloquepensisquetienecabidaenunalista
deusuarios.Elenlaceparalasuscripcinalalistadeusuarioses:
http://listserv.gva.es/mailman/listinfo/gvsig_usuarios

Listadedesarrolladores.Estorientadaparatodoslosinteresadosenconocercmoestdesarrollado
elgvSIG.Elenlaceparalasuscripcinaestalistaesa:
http://listserv.gva.es/mailman/listinfo/gvsig_desarrolladores

Listainternacional.Estorientadatantoparausuarioscomoparadesarrolladoresdehablanohispana.
Elidiomaautilizarespreferentementeingls.Elenlaceparalasuscripcinaestalistaes:
http://listserv.gva.es/mailman/listinfo/gvsig_internacional

Todos los nombres propios de programas, sistemas operativos, equipo hardware etc., que
aparecenenestecursosonmarcasregistradasdesusrespectivascompaasuorganizaciones.

2013gvSIGAssociation

Este manual se distribuye con la licencia Creative Commons ReconocimientoCompartirIgual 3.0


Unported(http://creativecommons.org/licenses/ccbysa/3.0/deed.es)VercondicionesenAnexos

2013gvSIGAssociation

Вам также может понравиться