创建一个简单的多边形表

1. 首先创建一个多边形的表

CREATE   TABLE  shp_polygon
(
   polygon_id serial 
NOT   NULL
   "name" 
character   varying ( 40 ), 
   
CONSTRAINT  pk_shp_polygon  PRIMARY   KEY  (polygon_id) USING  INDEX  TABLESPACE pg_default
WITH  (OIDS = FALSE)

TABLESPACE pg_default;

 

2. 使用Postgresql自带的“AddGeometryColumn”函数增加图形关系

 

AddGeometryColumn会自动为你所要的表增加一个代表坐标点的数据列,名为:the_geom,为geometry类型

 

AddGeometryColumn(数据库schema, 图形表名, 'the_geom', 投影坐标(eg: 4326), 图形类型(eg: POLYGON), 图形维数(eg: 2));

我们插入如下的代码:

 

 

SELECT  AddGeometryColumn( ' public ' ' shp_polygon ' , ' the_geom ' 4326  , ' POLYGON ' 2 );

 

 

3. 检查geometry_columns表

 

select * from geometry_columns;

你会发现多了一行数据:

    public    shp_polygon    the_geom    2    4326    POLYGON

 

4. 给图形表增加坐标数据

 

insert   into  shp_polygon(name, the_geom)
values ( ' Triangle ' , ST_GeomFromText( ' POLYGON((10 20, 20 40, 50 15, 10 20)) ' 4326 ));

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用pymunk库来创建一个多边形并且创建一个可以在多边形内运动的物体。以下是一个简单的代码示例: ``` import pymunk # 创建一个多边形的顶点 vertices = [(0,0), (0,100), (100,100), (100,0)] # 创建多边形对象 poly = pymunk.Poly(None, vertices) # 创建一个物理空间对象 space = pymunk.Space() # 将多边形添加到物理空间 space.add(poly) # 创建一个圆形的刚体 body = pymunk.Body(1, pymunk.inf) # 设置圆形的初始位置 body.position = 50, 50 # 创建一个圆形的形状 shape = pymunk.Circle(body, 10) # 将圆形添加到物理空间 space.add(body, shape) # 模拟物理世界的运动 for i in range(1000): space.step(0.01) print(body.position) ``` 在这个代码中,我们首先创建了一个多边形,然后创建了一个物理空间,并将多边形添加到物理空间中。接下来,我们创建了一个圆形的刚体并设置了它的初始位置,然后创建了一个圆形的形状并将其添加到物理空间中。最后,我们通过循环模拟物理世界的运动,并打印出圆形的位置。 ### 回答2: PyMunk是一个Python物理引擎,可以用于添加物理效果和模拟物理世界。要在PyMunk中创建一个多边形,我们可以使用Space类来示物理空间,使用Body类示物体,使用Shape类示形状。 首先,我们需要导入pymunk和pygame模块,并创建一个窗口来显示物体的运动: ```python import pymunk import pygame # 初始化pygame和pymunk pygame.init() space = pymunk.Space() space.gravity = 0, -1000 # 设置重力 # 创建窗口 screen = pygame.display.set_mode((600, 400)) clock = pygame.time.Clock() ``` 接下来,我们可以创建一个多边形,然后将其添加到空间中,并设置其质量、惯性和摩擦力等属性: ```python # 创建一个多边形 vertices = [(0, 0), (0, 50), (50, 50), (50, 0)] polygon = pymunk.Poly(None, vertices, radius=1) polygon.mass = 1 # 设置质量 polygon.moment = pymunk.moment_for_poly(1, vertices) # 设置惯性 polygon.friction = 0.5 # 设置摩擦力 # 创建一个物体,将多边形添加到物体中 body = pymunk.Body(1, polygon.moment) body.position = 300, 300 polygon.body = body # 将多边形添加到空间中 space.add(body, polygon) ``` 然后,我们可以创建一个用于移动的物体,并将其添加到空间中: ```python # 创建一个移动的物体 circle = pymunk.Circle(None, 25) circle.mass = 1 circle.moment = pymunk.moment_for_circle(1, 0, 25) circle.friction = 0.5 # 创建一个身体,将圆形添加到身体中 body = pymunk.Body(1, circle.moment) body.position = 100, 100 circle.body = body # 将圆形添加到空间中 space.add(body, circle) ``` 最后,我们可以在游戏循环中更新空间,并在屏幕上绘制物体的位置: ```python # 游戏循环 while True: for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() sys.exit() space.step(1 / 60) # 更新物理空间 screen.fill((0, 0, 0)) # 清空屏幕 # 绘制多边形 pygame.draw.polygon(screen, (255, 0, 0), polygon.get_vertices()) # 绘制圆形 pygame.draw.circle(screen, (0, 255, 0), body.position, int(circle.radius)) pygame.display.update() # 刷新屏幕 clock.tick(60) # 控制帧率 ``` 通过以上步骤,我们就可以使用PyMunk创建一个多边形,并在多边形创建一个可以移动的物体。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值