使用Python生成泰森多边形
时间: 2023-07-11 21:08:12 浏览: 315
要生成泰森多边形,可以使用Python中的Delaunay三角剖分算法。下面是一个简单的示例代码:
```python
import numpy as np
from scipy.spatial import Delaunay
import matplotlib.pyplot as plt
# 生成随机点
points = np.random.rand(30, 2)
# 计算Delaunay三角剖分
tri = Delaunay(points)
# 绘制三角形
plt.triplot(points[:,0], points[:,1], tri.simplices)
plt.plot(points[:,0], points[:,1], 'o')
plt.show()
```
这个示例代码中,首先生成了30个随机点,然后使用`Delaunay`函数计算出它们的Delaunay三角剖分,最后使用`triplot`函数绘制出这些三角形。你可以根据需要修改点的数量和其他参数来生成不同形状的泰森多边形。
相关问题
python绘制泰森多边形
Python可以使用scipy库中的Delaunay三角剖分函数和shapely库中的Polygon函数来绘制泰森多边形。具体步骤如下:
1. 导入必要的库:numpy、scipy、matplotlib、shapely。
2. 生成随机点集。
3. 使用scipy库中的Delaunay函数对点集进行三角剖分。
4. 使用shapely库中的Polygon函数将每个三角形转换为多边形。
5. 计算每个多边形的重心。
6. 使用matplotlib库绘制泰森多边形和点集。
代码如下(代码类型为Python):
```
import numpy as np
from scipy.spatial import Delaunay
import matplotlib.pyplot as plt
from shapely.geometry import Polygon, Point
# 生成随机点集
points = np.random.rand(30, 2)
# 进行三角剖分
tri = Delaunay(points)
# 将每个三角形转换为多边形
polygons = []
for i in range(tri.nsimplex):
polygon = Polygon(points[tri.vertices[i]])
polygons.append(polygon)
# 计算每个多边形的重心
centroids = []
for polygon in polygons:
centroid = polygon.centroid
centroids.append(centroid)
# 绘制泰森多边形和点集
fig, ax = plt.subplots()
for polygon in polygons:
ax.add_patch(plt.Polygon(polygon.exterior))
ax.plot(points[:,0], points[:,1], 'o')
plt.show()
```
python 泰森多边形边界_geotools中泰森多边形的生成
在geotools中,可以使用TriangulationBuilder类来生成泰森多边形边界。具体步骤如下:
1. 创建Point集合
```python
List<Point> points = new ArrayList<>();
```
2. 将要生成泰森多边形的点添加到Point集合中
```python
points.add(new GeometryFactory().createPoint(new Coordinate(0, 0)));
points.add(new GeometryFactory().createPoint(new Coordinate(10, 0)));
points.add(new GeometryFactory().createPoint(new Coordinate(10, 10)));
points.add(new GeometryFactory().createPoint(new Coordinate(0, 10)));
```
3. 创建TriangulationBuilder对象并设置点集合
```python
TriangulationBuilder tb = new TriangulationBuilder();
tb.setSites(points);
```
4. 生成Delaunay三角网
```python
Geometry triangulation = tb.getTriangles(new GeometryFactory());
```
5. 生成泰森多边形边界
```python
Geometry boundary = triangulation.convexHull();
```
完整示例代码如下:
```python
import java.util.ArrayList;
import java.util.List;
import org.locationtech.jts.geom.Coordinate;
import org.locationtech.jts.geom.Geometry;
import org.locationtech.jts.geom.GeometryFactory;
import org.locationtech.jts.triangulate.ConformingDelaunayTriangulationBuilder;
import org.locationtech.jts.triangulate.TriangulationBuilder;
public class Main {
public static void main(String[] args) {
List<Point> points = new ArrayList<>();
points.add(new GeometryFactory().createPoint(new Coordinate(0, 0)));
points.add(new GeometryFactory().createPoint(new Coordinate(10, 0)));
points.add(new GeometryFactory().createPoint(new Coordinate(10, 10)));
points.add(new GeometryFactory().createPoint(new Coordinate(0, 10)));
TriangulationBuilder tb = new ConformingDelaunayTriangulationBuilder();
tb.setSites(points);
Geometry triangulation = tb.getTriangles(new GeometryFactory());
Geometry boundary = triangulation.convexHull();
System.out.println(boundary);
}
}
```
阅读全文