Javascript - Фильтр geojson на основе других значений json - PullRequest
0 голосов
/ 02 июня 2019

Я борюсь с фильтрацией геойсона на основе значений другого JSON. В частности, я пытаюсь отфильтровать геойсон на основе идентификаторов в другом json. Каждый раз мой отфильтрованный геойсон возвращает ноль.

Я создал JSfiddle здесь , показывающий, что я пытаюсь сделать.

Код

    mygeojson={crs: {properties: {name: "EPSG:4326"}, type: "name"},
features: [
    {geometry: {coordinates: [25, 37], type: "Point"},properties: {"wineryid":3},type:"Feature"},
  {geometry: {coordinates: [26, 37], type: "Point"},properties: {"wineryid":45},type:"Feature"},
  {geometry: {coordinates: [25, 38], type: "Point"},properties: {"wineryid":34},type:"Feature"},
  {geometry: {coordinates: [28, 37], type: "Point"},properties: {"wineryid":42},type:"Feature"},
  {geometry: {coordinates: [25, 342], type: "Point"},properties: {"wineryid":80},type:"Feature"},
  {geometry: {coordinates: [25.24, 37.12], type: "Point"},properties: {"wineryid":120},type:"Feature"}], type:"FeatureCollection"};
mylist=[{id:1, name:"test1"},{id:34,name:"test2"}];
tempgeojson = mygeojson.features.filter(function (item) {
  return (mylist.every(f => item.properties.id === f.id) )
});
filteredgeojson={};
filteredgeojson.features=tempgeojson;
filteredgeojson.crs=mygeojson.crs;
filteredgeojson.type="FeatureCollection";

Как мне получить отфильтрованный геоджон, который мне нужен? (В этом примере ожидаемый geojson составляет около 1 и 34 идентификаторов.)

1 Ответ

1 голос
/ 02 июня 2019

Попробуйте следующий код для фильтрации функций

filteredgeojson.features = mygeojson.features.filter(item => { 
     if(mylist.filter(myitem => myitem.id === item.properties.wineryid).length > 0) { 
          return item;
      }
});
...