【问题标题】:Line (from gpx) intersects polygon (from Fusion Table)线(来自 gpx)与多边形(来自 Fusion Table)相交
【发布时间】:2016-06-17 18:09:29
【问题描述】:

我决定从 Fusion Tables 获取行政区域。导入 gpx 文件后,我将其保存到 MySQL

$gpx = simplexml_load_file($folder.$file);
$trasa ="'LINESTRING(";
foreach ($gpx->trk->trkseg->trkpt as $trkpt) {
    $lat = (string) $trkpt['lat'];
    $lon = (string) $trkpt['lon'];
    $trasa .= $lon;
    $trasa .=" ";
    $trasa .= $lat;
    $trasa .=",";
}
$trasa =rtrim($trasa,",");
$trasa .=")',0";
unset($gpx);
$ins = @mysql_query("INSERT INTO punktytras(nick,punkty) VALUES('$nick', LineFromText($trasa))");

之后我希望通过代码加载与 gpx 相交的地图 Fusion Table 图层

    var layer = new google.maps.FusionTablesLayer({
          query: {
            select: 'geometry',
            from: '1w7Z-O1F0g4s2suHq4mSlAJ-31MBPwVLB7vXKAuaY',
            where: 'SELECT ST_INTERSECTS(LineFromText($trasa), geometry))'
          }
        });
  layer.setMap(map);

但是 Fusion Table 中的所有几何图形都已加载。我在哪里犯错了? TIA 4 个答案。

已编辑 好的,我改变了我的查询,现在我有

$.ajax({
     type: "GET",
     url: "uploads/<?php echo $row['file'] ?>",
     dataType: "xml",
     success: function(xml) {
       var points = [];
        var kolory=[];
       $(xml).find("trkpt").each(function() {
         var lat = $(this).attr("lat");
         var lon = $(this).attr("lon");
         var p = new google.maps.LatLng(lat, lon);
            var layer = new google.maps.FusionTablesLayer({
          query: {
            select: '\'geometry\'',
            from: '1w7Z-O1F0g4s2suHq4mSlAJ-31MBPwVLB7vXKAuaY',
            where: 'ST_INTERSECTS(\'geometry\',CIRCLE(LATLNG('+ lat+","+lon +'), 0.5));'
          }
        });
        layer.setMap(map);
        points.push(p);
         bounds.extend(p); 

       });

但我认为我的 gpx 中前 5 个 ponts 只有 5 个 Fusion Tables Layers。我不知道,如何首先从 gpx 中选择包含点的区域,然后将它们添加为 FTLayer :(

【问题讨论】:

    标签: google-maps google-maps-api-3 google-fusion-tables


    【解决方案1】:

    您的查询无效:

    where: 'SELECT ST_INTERSECTS(LineFromText($trasa), geometry))'
    

    第一个参数必须是表中的列名。 (目前)不支持线作为几何图形。

    来自the documentation

    ST_INTERSECTS

    • &lt;spatial_condition&gt;

    在 WHERE 子句中使用。语法为:ST_INTERSECTS(&lt;location_column&gt;, &lt;geometry&gt;)

    ST_INTERSECTS 不能与 ORDER BY ST_DISTANCE 组合。


    • &lt;geometry&gt;

    使用以下方法之一:

    &lt;circle&gt; &lt;rectangle&gt;

    • &lt;location_column&gt; &lt;column_name&gt; 表示表中包含位置数据的列。

    【讨论】:

    • 谢谢 4 answer geocodezip 那么,我应该使用 'where: 'SELECT ST_INTERSECTS(geometry,($trasa2))'' 其中 $trasa2 可以是从 $trasa 构建的矩形吗?还是对每个点使用 'google.maps.geometry.poly.containsLocation(PointFromText(concat("POINT(",$lat," ",lon,")")), geometry)'?在您看来,找到 Polygons 与 Line 相交的更好方法是什么?
    • 也许将 gpx 也放入 Fusion Table 是否正确?
    猜你喜欢
    • 2016-11-18
    • 2015-09-21
    • 2015-01-28
    • 2014-07-28
    • 2019-03-24
    • 1970-01-01
    • 2011-08-30
    • 1970-01-01
    • 2013-06-03
    相关资源
    最近更新 更多