Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 使用KML查询PostGIS数据库;shapefile“;_Django_Google Maps_Postgis - Fatal编程技术网

Django 使用KML查询PostGIS数据库;shapefile“;

Django 使用KML查询PostGIS数据库;shapefile“;,django,google-maps,postgis,Django,Google Maps,Postgis,我正在开发一个谷歌地图应用程序,该应用程序具有以下功能(在低缩放级别上): 将一组多边形覆盖打印到地图上。这些多边形是从我用Google Earth创建的KML文件创建的。基本上,这些多边形覆盖了大陆大小的大块地球。其中15个覆盖了全世界 在每个多边形覆盖的顶部,将显示一个数字,表示该多边形中存在的点的总数 我想在地图上显示的点有一个表示国家的字段和一个表示纬度/经度的字段。我获取总数的方法是按国家代码对每个多边形进行查询,如下所示: east_europe_total = Point.obje

我正在开发一个谷歌地图应用程序,该应用程序具有以下功能(在低缩放级别上):

  • 将一组多边形覆盖打印到地图上。这些多边形是从我用Google Earth创建的KML文件创建的。基本上,这些多边形覆盖了大陆大小的大块地球。其中15个覆盖了全世界

  • 在每个多边形覆盖的顶部,将显示一个数字,表示该多边形中存在的点的总数

  • 我想在地图上显示的点有一个表示国家的字段和一个表示纬度/经度的字段。我获取总数的方法是按国家代码对每个多边形进行查询,如下所示:

    east_europe_total = Point.objects.filter( Q(country_code='TR') | Q(country_code='CZ') ... ).count()
    

    如果我想让边界跨越一个国家,或者如果我想重新组织我的多边形“扇区”,这不是很好。一个更好的解决方案是将KML文件提供给数据库(即PostGIS),并为我整理好所有内容。这有可能吗?如果没有,那么如何将KML文件转换为既可以轻松插入谷歌地图,又可以通过postGIS查询的格式呢?

    尽管它不能完全满足您的要求,但我发现它的可读性和叙述性都非常宝贵(指的是一个与您需要的操作有些不同的操作——也不同于我当时尝试的操作——但仍然需要PostGIS与KML文件交互)

    通常有很多GIS术语 这是相当学术的,数学的 让外行感到不安 (例如凸面外壳)但如果 看得够久,你最终会 找到你需要的

    …像这样可读的文章(带有指向许多工具和c的指针)是一个开始


    因此,总而言之,首先,您需要找到一种可接受的方法,将KML转换为PostGIS知道的格式(或者特别是ogr2ogr知道的格式),例如GML(并验证这一点),然后类似的东西可以让你将该格式加载到PostGIS中——当然,你仍然需要多边形操作中的点,但是,嘿,这是一个开始。

    你总是可以解析XML,提取坐标,然后根据坐标数组生成一个形状文件。无论如何,我可以在ruby中帮助你完成第一部分

    require 'nokogiri'
    x  = Nokogiri::XML(File.open("fn.kml").read)
    ary_of_coords = x.css("//coordinates").children.first.inner_text.gsub("\n", "").gsub("\t", "").split(",0")
    

    链接断了,也许你还有那篇文章的链接?