地理编码应用程序实例-利用LanceDB、Pgvector构建地址查询应用

本文展示了如何利用LanceDB和Pgvector构建一个查询地址和位置数据的应用。首先介绍数据准备和向量嵌入,然后详细说明如何创建矢量数据库,包括安装、设置和创建表。LanceDB是一个为AI设计的高性能矢量数据库,而Pgvector是Postgres的矢量相似性搜索扩展。最后,通过示例演示了根据地址和位置信息查找最近点的过程,证实了这些工具在提供高性能查询响应方面的价值。
摘要由CSDN通过智能技术生成

介绍

在本文中,我的目标是开发一个利用矢量数据库来查询地址和位置数据的应用程序。

数据准备和向量嵌入

我们将使用受地震影响的城市的数据进行应用。

要安装矢量嵌入库,我们需要运行以下命令:

pip install pandas geopandas pyarrow transformer torch

如果您在安装pytorch库时遇到错误,可以从这里下载。

让我们导入我们安装的库:

from transformers import AutoTokenizer, AutoModel
import torch
import pandas as pd
import geopandas as gpd

读取数据:

df = pd.read_csv("bina.csv")
df.columns
"""
['il', 'ilce', 'mahalle', 'sokak', 'binaNo', 'x', 'y']
"""

坐标系变换:

gdf = gpd.GeoDataFrame(df,geometry=gpd.points_from_xy(df["x"],df["y"]),crs=4326)
gdf = gdf.to_crs("EPSG:3857")
df["x"] = gdf.geometry.x 
df["y"] = gdf.geometry.y

组合地址信息并根据坐标创建向量:

df["adres"] = df[['il', 'ilce', 'mahalle', 'sokak', 'binaNo']].apply(lambda x: f"{x['mahalle']} mahallesi {x['sokak']} no {x['binaNo']} {x['ilce']} {x['il']} ",axis=1)
df["vector_geom"] = df[["x","y"]].apply(lambda x: [x["x"],x["y"]],axis=1)
df.to_csv("bina.csv",index=False)
df.sample(10)

它包含城市、区、社区、街道、建筑物号码和位置信息。

  • 6
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

gis收藏家

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值