当前位置: 首页 > 知识库问答 >
问题:

使用GEOJson格式的OpenLayers中的独立特征选择

亢胤运
2023-03-14

我正在使用OpenLayers并加载两个GEOJson文件,这些文件工作得非常好。现在,我希望能够选择GEOJson文件的各个组件。例如,如果在激活悬停选择时有多个特征(两个多边形),则不会发生任何情况。

我在这个示例中添加了悬停选择器http://openlayers.org/dev/examples/geojson.html

我实际上可以独立拖动元素,但我不能选择它们。我想是因为我使用的投影。知道怎么修吗?

干杯

function init(){

var options = {
    projection: new OpenLayers.Projection("EPSG:900913"),
    displayProjection: new OpenLayers.Projection("EPSG:4326"),
    units: "m",
    numZoomLevels: 18,
};

map = new OpenLayers.Map('map', options );
var mapnik = new OpenLayers.Layer.OSM({layers: 'basic'});           
map.addLayer(mapnik);

map.addControl(new OpenLayers.Control.MousePosition());

var lon = 12.18;
var lat = 53.81;
var lonLat = new OpenLayers.LonLat(lon,lat).transform(map.displayProjection,  map.projection);

var mapcent = new OpenLayers.LonLat(lon, lat).transform(map.displayProjection, map.projection);
zoom = 5.5;
map.setCenter(mapcent, zoom);
document.getElementById('noneToggle').checked = true;

var proj = new OpenLayers.Projection("EPSG:4326");

var file = [];
file[0] = "geojson/nuts3.geojson";

var style = [];

i=0;
while(i<file.length){
    style[i] = new OpenLayers.StyleMap({
        pointRadius: 2,
        strokeColor: 'red',
        strokeWidth: 1,
        strokeOpacity: 1,
        fillColor: 'red',
        fillOpacity: 0.2
    });

    var layer_name = "layer_" + i;
    vectorLayer[i] = new OpenLayers.Layer.Vector(layer_name,  {
        styleMap: style[i],
        projection: map.displayProjection,
        preFeatureInsert: function(feature){
        feature.geometry.transform(proj, map.getProjectionObject());
        },
    });
    map.addLayer(vectorLayer[i]);   

    var gjson = new OpenLayers.Format.GeoJSON();
    var featurecollection = ReadFile(file[i]);
    //Readfile is just a normal Request.POST function   
    vectorLayer[i].addFeatures(gjson.read(featurecollection));  
    i=i+1;
}

controls = {
    selecthover: new OpenLayers.Control.SelectFeature(vectorLayer[0],{
        hover: true,
        highlightOnly: true
    })
};

for(var key in controls) {
    map.addControl(controls[key]);
    controls[key].activate();

}

            var report = function(e) {
            OpenLayers.Console.log(e.type, e.feature.id);
        };

        var highlightCtrl = new OpenLayers.Control.SelectFeature(vectors, {
            hover: true,
            highlightOnly: true,
            renderIntent: "temporary",
            eventListeners: {
                beforefeaturehighlighted: report,
                featurehighlighted: report,
                featureunhighlighted: report
            }
        });


        map.addControl(highlightCtrl);
        map.addControl(selectCtrl);            
}   

geojson文件类似于

{“类型”:“特征集合”,“特征”:[{“类型”:“特征”,“id”:0,“属性”:{},“几何”:{“类型”:“多边形”,“坐标”:[[9.244170,48.847009],[9.246171,48.822260],[9.248220,48.796910],[9.248433,48.794277],[9.290007,48.791633],[9.298732,48.785304],[9.145165,48.859655],[9.153553,48.861241],[9.207493,48.852769],[9.235667,48.848344],[9.244170,48.847009],{“类型”:“特征”,“id”:1,“属性”:{},“几何”:{“类型”:“多边形”,“坐标”:[[9.064848,48.755577],[9.038994,48.741317],[9.104720,48.709080],[9.104721,48.709079],[9.1465561,48.663574],[9.655622,48,2414],[9.162166,48.646602],[9.174173,48.633544],[9.064848,48.755577]]}}等

共有1个答案

诸葛柏
2023-03-14

好的,我解决了。

https://gis.stackexchange.com/questions/25314/change-vector-projection-in-openlayers

按照该问题的正确答案中提出的投影,并对Geojson文件的每个部分使用独立的id,就可以在悬停时进行选择。

 类似资料:
  • 我正在从事一个使用openlayers(version2.14)显示Bing层(GeoJSON格式)的项目,我在阅读GeoJSON和显示功能方面没有问题,但我想以编程方式选择一个功能,例如,有一个表显示所有功能属性(GeoJSON格式。示例: {“类型”:“特征集合”,“特征”:[{“类型”:“特征”,“属性”:{},“几何”:{“类型”:“点”,“坐标”:[-7923751.4232522523

  • 目标 在本章中, 我们将看到BRIEF算法的基础知识 理论 我们知道SIFT使用128维矢量作为描述符。由于它使用浮点数,因此基本上需要512个字节。同样,SURF最少也需要256个字节(用于64像素)。为数千个功能部件创建这样的向量会占用大量内存,这对于资源受限的应用程序尤其是嵌入式系统而言是不可行的。内存越大,匹配所需的时间越长。 但是实际匹配可能不需要所有这些尺寸。我们可以使用PCA,LDA

  • 即使 M600 与手机断开连接,M600 的部分基本功能仍可继续使用。 在独立模式下,您能: 了解时间、查看日期。 使用 Polar 应用程式进行训练。 如果您的智能手表已经接到Wi-Fi网络,请使用应用程式商店。 使用码表。 使用计时器。 查看您当日的时间表。 设置闹钟。 查看您的步数。 查看您的心率。 更改手表表面。 使用飞行模式。

  • 特征选择在于选取对训练集有分类能力的特征,这样可以提高决策树学习的效率。 通常特征选择的准则是信息增益或信息增益比。 信息增益 信息增益(information gain)表示得知特征$$X$$的信息而使得类$$Y$$的信息不确定性减少称。 特征$$A$$对训练数据集$$D$$的信息增益$$g(D,A)$$,定义为集合$$D$$的经验熵$$H(D)$$与特征$$A$$在给定条件下$$D$$的经验条

  •   RFormula通过一个R model formula选择一个特定的列。 目前我们支持R算子的一个受限的子集,包括~,.,:,+,-。这些基本的算子是: ~ 分开target和terms + 连接term,+ 0表示删除截距(intercept) - 删除term,- 1表示删除截距 : 交集 . 除了target之外的所有列   假设a和b是double列,我们用下面简单的例子来证明RFor