有没有支持MySQL的Python空间库?

3 投票
1 回答
1528 浏览
提问于 2025-04-17 18:11

有没有办法用sqlsoup或者其他的Python MySQL库来处理MySQL中的一些空间类型,比如几何形状、点、和多边形等等?如果可以的话,能不能有人示范一下怎么用这个Python库来执行一个SELECT查询,并从一个多边形中提取点?

1 个回答

2

我不知道有没有一个软件包可以同时查询MySQL数据库和处理空间数据,但MySQL支持两种空间数据格式:已知文本格式已知二进制格式(这让你可以存储点、线、面等数据)。

你需要使用MySQLdb来向你的MySQL数据库发送查询,通过SQL语句获取数据(这里有例子)。如果你只想要构成一个多边形的点,你可以做一些简单的字符串处理来构建一个点的数组:

input = "POLYGON ((30 10, 10 20, 20 40, 40 40, 30 10))"

def polygon_to_points(polygon):
  geometry = polygon[10:-2]
  coordinates = geometry.split(', ')
  coord_pairs = []
  for c in coordinates:
    pair = c.split(' ')
    pair_num = [float(pair[0]), float(pair[1])]
    coord_pairs.append(pair_num)
  return coord_pairs

这样就会返回[[30.0,10.0],[10.0,20.0],[20.0,40.0],[40.0,40.0],[30.0,10.0]],正是你想要的。如果你想进行更复杂的空间查询或分析,可以看看Shapely这个软件包。

撰写回答