如何根据用户的位置值对数据库执行查询?该应用程序是使用HTML5、CSS、Javascript和PHP开发的,具有一个包含列的数据库,如下表所示。在html网页上,收集用户地理坐标并将其与数据库中的值进行比较,以根据数据库中的地点找到距离用户最近的地点。请告诉我如何实现这一目标。任何示例/sample将不胜感激。 最佳答案 有一个问题比较各种空间数据库的功能,GIS:PostGIS/PostgreSQLvs.MySqlvs.SQLServer?,其中Postgis明显胜过MySQL。无论您使用MySQL还是Postgis,如果可以的
对于大多数数据库查询都包含“在多边形内”这样的要求的项目,我开始考虑选择带有PostGIS的PostgreSQL而不是我以前主要使用的MySQL。主要是PostgreSQL的GIS功能比较多。但是,我不确定如何对此进行评估,也无法从PHP开发人员的角度真正看出差异。PostgreSQL支持是否像MySQL一样与PHP集成?编写PostgreSQL查询(SQL)是否与MySQL非常相似?在选择PostgreSQL而不是MySQL时有什么注意事项需要考虑吗?根据定义,PostgreSQL是使用GIS数据时更好的解决方案吗?希望你们能帮我澄清一些。 最佳答案
使用Sequelize和地理空间查询,如果我想找到离某个位置最近的“n”个点,Sequelize查询应该如何?假设我有一个看起来像这样的模型:sequelize.define('Point',{geo:DataTypes.GEOMETRY('POINT')});现在假设我们通过类似的方式在数据库中输入100个随机点:db.Point.create({geo:{type:'Point',coordinates:[randomLng,randomLat]}});假设我们有一个lat和lng变量来定义一个位置,我们想要找到离它最近的10个点。当我运行此查询时出现错误:constlocatio
我几个小时以来一直在尝试这个问题,但我无法解决它。我正在使用this在Windows上设置GeoDjango的链接。我收到以下错误消息,但不知道该怎么做。所有环境变量都在Windows中设置,我可以使用导入fromosgeoimportgdal在python终端成功importgdal已弃用。在Postgresql数据库中,我可以根据需要提供所有扩展,如address_standardizer、fuzzystrmatch、ogr_fdw、pgrouting、plpgsql,pointcloud,pointcloud_postgis,postgis,postgis_sfcgal,post
我在数组中有一组多边形(不在数据库中)。我想检查这些多边形与另一个多边形相交。例子:input:[[],[],[],[],[]]-setofpolygonswanttochecksthosewithanotheronepolygon.ReturnanarrayoftrueorfalseST_Intersects一次仅支持两个多边形。有什么办法一次检查全部吗?如果没有,我必须循环遍历所有输入多边形,然后一一检查。谢谢。看答案您可以结合使用ST_DUMP和ST_INTERSECTS阵列几何形状的功能(多时间计量类型)st_astext(parcel.geom);MULTIPOLYGON(((398
我刚刚在我的开发机器上启动并运行了GeoDjango。问题是我无法让距离查询正常工作。无论我使用什么SRID,距离结果都完全不同。这是一个例子。>>>fromdjango.contrib.gis.measureimportD>>>fromapp.modelsimportPlace>>>fromdjango.contrib.gis.geosimportPoint>>>qs=Place.objects.all()>>>point=Point(-118,34)>>>qs.filter(coordinates__distance_lte=(point,D(m=1)))[,,,,,,,,,,]问
我正在编写一个类,用作更大的建模算法的一部分。我的部分进行空间分析以计算从某些点到其他点的距离。有多种条件,包括返回距离的数量、截止距离等。目前,项目规范仅指示硬编码情况。即“函数#1需要列出点集A到点集B在500米内的所有距离。函数#2需要列出点集C到点集D的所有距离......”等等。我不想对这些参数进行硬编码,开发下一阶段模型的人也不想,因为显然他们想调整参数或可能在其他项目中重用该算法有不同的条件。现在的问题是我正在使用psycopg2来执行此操作。这是我工作的标准,所以我没有选择偏离它的选择。我已经读到,由于SQL注入(inject)的明显原因,公开将作为参数放入执行的查询中
例如,classLake(Base):__tablename__='lake'id=Column(Integer,primary_key=True)name=Column(String)geom=Column(Geometry('POLYGON'))point=Column(Geometry('Point'))lake=Lake(name='Orta',geom='POLYGON((30,60,63,33,30))',point="POINT(29)")query=session.query(Lake).filter(Lake.geom.ST_Contains('POINT(41)')
我有数千个以表格格式存储的多边形(给定它们的4个角坐标),代表地球的小区域。此外,每个多边形都有一个数据值。该文件看起来像这样:lat1,lat2,lat3,lat4,lon1,lon2,lon3,lon4,data57.27,57.72,57.68,58.1,151.58,152.06,150.27,150.72,13.4556.96,57.41,57.36,57.79,151.24,151.72,149.95,150.39,56.2457.33,57.75,57.69,58.1,150.06,150.51,148.82,149.23,24.5256.65,57.09,57.05,5
我正在将GeoDjango与PostGIS结合使用。然后我遇到了如何从我的postgres数据库表中的给定坐标获取最近记录的问题。 最佳答案 这就是使用GeoDjango和PostGIS的答案点坐标必须是一个GEOSGeometry对象。让它使用fromdjango.contrib.gis.geosimportGEOSGeometrypoint=GEOSGeometry('POINT(523)')然后,假设您有一个“餐厅”模型和该点的坐标。因此,对于最近的餐厅,只需使用:Restaurants.objects.distance(po