Hay algunas buenas bibliotecas que hacen la mayor parte del trabajo pesado por ti.
Ejemplo de uso de [shapely][1] en python.
import random
from shapely.geometry import Polygon, Point
def get_random_point_in_polygon(poly):
minx, miny, maxx, maxy = poly.bounds
while True:
p = Point(random.uniform(minx, maxx), random.uniform(miny, maxy))
if poly.contains(p):
return p
p = Polygon([(0, 0), (0, 2), (1, 1), (2, 2), (2, 0), (1, 1), (0, 0)])
point_in_poly = get_random_point_in_polygon(mypoly)
O utilice .representative_point()
para obtener un punto dentro del objeto (como menciona dain):
Devuelve un punto calculado a bajo coste que se garantiza que está dentro del objeto geométrico.
poly.representative_point().wkt
'POINT (-1.5000000000000000 0.0000000000000000)'
[1]: https://shapely.readthedocs.io
4 votos
Por el contrario, el tiempo es previsible. Es proporcional a la relación entre el área de extensión del polígono dividida por el área del polígono, multiplicada por el tiempo necesario para generar y probar un solo punto. El tiempo varía un poco, pero la variación es proporcional a la raíz cuadrada del número de puntos. Para números grandes, esto es irrelevante. Si es necesario, divida los polígonos tortuosos en trozos más compactos para reducir la proporción de área a un valor bajo. Sólo los polígonos fractales le darán problemas, ¡pero dudo que usted los tenga!
3 votos
Posible duplicado de Distribución de puntos respecto a las características mediante Quantum Gis
1 votos
Y también: gis.stackexchange.com/questions/4663/
0 votos
@Pablo: buenos hallazgos. Sin embargo, ambas preguntas son específicas del software y se refieren a la colocación de matrices regulares de puntos dentro de polígonos, no a puntos aleatorios.
0 votos
De acuerdo con whuber diferencia es puntos aleatorios vs regular la generación de puntos dentro de un polígono.
0 votos
Quizás este ejemplo en python te sea útil: gis.stackexchange.com/questions/10579/