正在显示
3 个修改的文件
包含
18 行增加
和
10 行删除
... | ... | @@ -64,7 +64,7 @@ namespace DmpWfs |
64 | 64 | rootname = "WFS_Capabilities"; |
65 | 65 | xmlRoot.add("<xmlattr>.xmlns:xsi","http://www.w3.org/2001/XMLSchema-instance"); |
66 | 66 | xmlRoot.add("<xmlattr>.xmlns","http://www.opengis.net/wfs"); |
67 | - xmlRoot.add("<xmlattr>.ogc","http://www.ogc.net/wfs"); | |
67 | + xmlRoot.add("<xmlattr>.xmlns:ogc","http://www.ogc.net/wfs"); | |
68 | 68 | xmlRoot.add("<xmlattr>.xmlns:sld","http://www.opengis.net/sld"); |
69 | 69 | xmlRoot.add("<xmlattr>.xsi:schemaLocation","http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.0.0/WFS-capabilities.xsd"); |
70 | 70 | xmlRoot.add("<xmlattr>.version", version); | ... | ... |
... | ... | @@ -591,12 +591,20 @@ ST_GeometryFromText('POLYGON((%f %f, %f %f, %f %f, %f %f, %f %f))',%s),\ |
591 | 591 | std::string sql = format(ss.c_str(), layer->schema().c_str(), tableName.c_str()); |
592 | 592 | |
593 | 593 | string shapeName = layer->geom(); |
594 | - // WHERE \"%s\" && \'BOX3D(%lf %lf,%lf %lf)\'::box3d | |
595 | - //sql += format(" ST_DWithin(\"%s\", ST_GeometryFromText('POINT(%f %f)',%s),%f) limit %d ", | |
596 | - // shapeName.c_str(), x, y,layer->srid().c_str(), dis, feature_count); | |
597 | - | |
598 | - sql += format(" \"%s\" && \'BOX3D(%lf %lf,%lf %lf)\'::box3d limit %d ", | |
594 | + if(!layer->srid().empty() && layer->srid().length()==4) | |
595 | + { | |
596 | + // WHERE \"%s\" && \'BOX3D(%lf %lf,%lf %lf)\'::box3d | |
597 | + sql += format(" ST_DWithin(\"%s\", ST_GeometryFromText('POINT(%f %f)',%s),%f) limit %d ", | |
598 | + shapeName.c_str(), x, y,layer->srid().c_str(), dis, feature_count); | |
599 | + } | |
600 | + else | |
601 | + { | |
602 | + sql += format(" \"%s\" && \'BOX3D(%lf %lf,%lf %lf)\'::box3d limit %d ", | |
599 | 603 | shapeName.c_str(), x - dis, y - dis, x + dis, y + dis, feature_count); |
604 | + } | |
605 | + | |
606 | + | |
607 | + | |
600 | 608 | |
601 | 609 | |
602 | 610 | //cout<<sql.c_str() <<endl; |
... | ... | @@ -612,9 +620,9 @@ ST_GeometryFromText('POLYGON((%f %f, %f %f, %f %f, %f %f, %f %f))',%s),\ |
612 | 620 | |
613 | 621 | double x0 = (x - m_dXdis) / m_dR; |
614 | 622 | double y0 = (m_dYdis - y) / m_dR; |
615 | - double dis = 1 / m_dR; | |
623 | + double dis = 2 / m_dR; | |
616 | 624 | |
617 | - for (int i = (int)(m_vLayers.size()) - 1; i >= 0; i--) | |
625 | + for (int i = 0; i < m_vLayers.size(); i++) | |
618 | 626 | { |
619 | 627 | DmpVectorLayer *layer = (DmpVectorLayer *)m_vLayers[i]; |
620 | 628 | |
... | ... | @@ -632,7 +640,7 @@ ST_GeometryFromText('POLYGON((%f %f, %f %f, %f %f, %f %f, %f %f))',%s),\ |
632 | 640 | string layerName = layer->name(); |
633 | 641 | if (pPgsqlConn->ExecWaitBinary(sql)) |
634 | 642 | { |
635 | - if(pPgsqlConn->GetRowCount()>0 || i==0) | |
643 | + if(pPgsqlConn->GetRowCount()>0 || i== m_vLayers.size()-1) | |
636 | 644 | { |
637 | 645 | string srid = std::__cxx11::to_string(layer->crs().srid()); |
638 | 646 | mapserver::DmpMapServerUtil::responseGeojson(pPgsqlConn, responseData, layerName, srid); | ... | ... |
请
注册
或
登录
后发表评论