Revision 628 org.gvsig.scripting/trunk/org.gvsig.scripting/org.gvsig.scripting.app/org.gvsig.scripting.app.mainplugin/src/main/resources-plugin/scripting/lib/geom.py
geom.py | ||
---|---|---|
93 | 93 |
return None |
94 | 94 |
return geometry |
95 | 95 |
|
96 |
def createPoint(x=0, y=0, subtype=D2): |
|
97 |
""" |
|
98 |
Returns a new point with a subtype and sets the value for the X and the Y |
|
99 |
coordinates (default 0,0) or None if can't create point |
|
100 |
:param x: X coordinate value |
|
101 |
:param y: Y coordinate value |
|
102 |
:type x: double |
|
103 |
:type y: double |
|
104 |
:return: Point |
|
105 |
:rtype: Point |
|
106 |
""" |
|
107 |
try: |
|
108 |
geometryManager = GeometryLocator.getGeometryManager() |
|
109 |
point = geometryManager.createPoint(x, y, subtype) |
|
110 |
except: |
|
96 |
def createPoint2D(x=None, y=None): |
|
97 |
if x==None and y==None: |
|
98 |
return createPoint(D2) |
|
99 |
elif x==None or y==None: |
|
111 | 100 |
return None |
101 |
else: |
|
102 |
return createPoint(D2, x, y) |
|
112 | 103 |
|
113 |
return point |
|
104 |
def createLine2D(vertexes=None): |
|
105 |
if vertexes==None: |
|
106 |
return createLine(D2) |
|
107 |
else: |
|
108 |
return createLine(D2, vertexes) |
|
114 | 109 |
|
115 |
def createNewPoint(subtype=D2,*coords): |
|
110 |
def createPolygon2D(vertexes=None): |
|
111 |
if vertexes==None: |
|
112 |
return createPolygon(D2) |
|
113 |
else: |
|
114 |
return createPolygon(D2, vertexes) |
|
115 |
|
|
116 |
|
|
117 |
def createPoint(subtype=D2,*coords): |
|
116 | 118 |
""" |
117 | 119 |
Returns a new point with a subtype and sets the value for the X, Y, Z and M |
118 | 120 |
coordinates (default 0,0,0,0) or None if can't create point |
... | ... | |
130 | 132 |
try: |
131 | 133 |
#If is geometry, transform to a new point type. |
132 | 134 |
if len(coords)==0: |
133 |
print "--out" |
|
134 | 135 |
return point |
135 | 136 |
else: |
136 | 137 |
# Coords with one parameter |
137 | 138 |
# Check if is a Geometry |
138 | 139 |
|
139 |
if isinstance(coords[0], Point):
|
|
140 |
return coords[0]
|
|
140 |
if len(coords)==1: #FIXME
|
|
141 |
coords = coords[0]
|
|
141 | 142 |
|
143 |
if isinstance(coords, Point): |
|
144 |
return coords |
|
145 |
|
|
142 | 146 |
#Check if object have GET attribute |
143 | 147 |
get = getattr(coords,"__getitem__",None) |
144 | 148 |
if get != None and len(coords)>=2: |
... | ... | |
174 | 178 |
except: |
175 | 179 |
m = 0 |
176 | 180 |
point.setCoordinateAt(point.getDimension()-1, m) |
177 |
|
|
178 | 181 |
return point |
179 | 182 |
except: |
180 | 183 |
return None |
... | ... | |
204 | 207 |
if isinstance(point, Geometry): |
205 | 208 |
pgeom = point |
206 | 209 |
else: |
207 |
pgeom = createNewPoint(subtype, point)
|
|
210 |
pgeom = createPoint(subtype, point) |
|
208 | 211 |
multipoint.addPrimitive(pgeom) |
209 | 212 |
except: |
210 | 213 |
return None |
... | ... | |
221 | 224 |
if vertexes!= None: |
222 | 225 |
try: |
223 | 226 |
for vertex in vertexes: |
224 |
vgeom = createNewPoint(subtype, vertex)
|
|
227 |
vgeom = createPoint(subtype, vertex) |
|
225 | 228 |
polygon.addVertex(vgeom) |
226 | 229 |
|
227 | 230 |
except: |
... | ... | |
258 | 261 |
if vertexes!=None: |
259 | 262 |
try: |
260 | 263 |
for vertex in vertexes: |
261 |
#if isinstance(vertex, Point): |
|
262 |
# pass |
|
263 |
#else: |
|
264 |
vertex= createNewPoint(subtype, vertex) |
|
265 |
line.addVertex(vertex) |
|
264 |
v = createPoint(subtype, vertex) |
|
265 |
line.addVertex(v) |
|
266 | 266 |
except: |
267 | 267 |
return None |
268 | 268 |
|
... | ... | |
293 | 293 |
Returns envelope as a minimum bounding box or rectangle. This envelope is |
294 | 294 |
equivalent to the GM_Envelope specified in ISO 19107. |
295 | 295 |
:param pointMax: |
296 |
:type pointMax: geometry POINT or Tuple or List
|
|
296 |
:type pointMax: geometry POINT |
|
297 | 297 |
:param pointMin: |
298 |
:type pointMin: geometry POINT or Tuple or List
|
|
298 |
:type pointMin: geometry POINT |
|
299 | 299 |
:return: envelope |
300 | 300 |
:rtype Geometry |
301 | 301 |
""" |
302 |
|
|
303 |
geometryManager = GeometryLocator.getGeometryManager() |
|
304 |
if pointMin==None and pointMax==None: |
|
305 |
envelope = geometryManager.createEnvelope(dimension) |
|
306 |
return envelope |
|
307 |
|
|
308 | 302 |
# Coord min point |
309 | 303 |
get=getattr(pointMin,"__getitem__",None) |
310 | 304 |
if get != None: |
311 | 305 |
xmin = get(0) |
312 | 306 |
ymin = get(1) |
313 |
elif isinstance(pointMin, Point):
|
|
307 |
else:
|
|
314 | 308 |
xmin = pointMin.getX() |
315 | 309 |
ymin = pointMin.getY() |
316 |
else: |
|
317 |
return None |
|
318 | 310 |
|
319 | 311 |
# Coord max point |
320 | 312 |
get=getattr(pointMax,"__getitem__",None) |
321 | 313 |
if get != None: |
322 | 314 |
xmax = get(0) |
323 | 315 |
ymax = get(1) |
324 |
elif isinstance(pointMax, Point):
|
|
316 |
else:
|
|
325 | 317 |
xmax = pointMax.getX() |
326 | 318 |
ymax = pointMax.getY() |
327 |
else: |
|
328 |
return None |
|
329 | 319 |
|
330 |
try: |
|
320 |
geometryManager = GeometryLocator.getGeometryManager() |
|
321 |
if pointMax!=None and pointMin!=None: |
|
331 | 322 |
envelope = geometryManager.createEnvelope(xmin, ymin, xmax, ymax, dimension) |
332 |
except:
|
|
333 |
return None
|
|
334 |
|
|
323 |
else:
|
|
324 |
envelope = geometryManager.createEnvelope()
|
|
325 |
|
|
335 | 326 |
return envelope |
336 | 327 |
|
337 | 328 |
|
Also available in: Unified diff