Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

134
Visualizações
¿Cómo se combinan los valores de coordenadas de una matriz de elementos geojson?

Hola, estoy trabajando con un gran conjunto de datos geojson y estoy tratando de ver si puedo fusionar los valores de coordenadas de cada entrada en función de las entradas que comparten el mismo "User_ID".

Mi conjunto de datos se ve así:

 { "geometry":{ "type":"Point", "coordinates":[ -3.231658, 51.687026 ] }, "type":"Feature", "properties":{ "User_ID":1002848324 } }, { "geometry":{ "type":"Point", "coordinates":[ -3.231659, 51.687016 ] }, "type":"Feature", "properties":{ "User_ID":1002848324 } }

Intenté fusionar las entradas usando el método que se muestra en la respuesta de mwarren, url: "https://stackoverflow.com/questions/29244116/merge-geojson-based-on-unique-id".

Sin embargo, esto viene con el pequeño problema de que "attr" se ve como un "Identificador inesperado" cuando intento ejecutar una prueba.

Mi prueba del código hasta ahora es la siguiente:

 features.map(function(feature){ var matchedArray = features2.filter(function(feature2){ return feature2.User_ID === feature.User_ID; }); if(matchedArray && matchedArray[0]){ for(var attr in matchedArray[0].properties){ feature.properties[attr] = matchedArray[0].properties[attr]; } } });

El resultado deseado debería ser algo como esto:

 { "geometry":{ "type":"Point", "coordinates":[ -3.231658, 51.687026 ], [ -3.231659, 51.687016 ] }, "type":"Feature", "properties":{ "User_ID":1002848324 }

Cualquier ayuda será apreciada.

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Del comentario anterior...

"El OP necesita agrupar/recopilar los datos no solo por los mismos valores de User_ID sino también por el mismo type Y los mismos valores User_ID "

... y tal vez incluso por el mismo tipo de geometry.type . Una agrupación/recopilación basada solo en User_ID no es lo suficientemente explícita porque los elementos con los mismos valores de User_ID pueden presentar diferentes valores de type o incluso pueden diferir en sus valores de tipo de geometry.type .

Una tarea basada en reduce que utiliza un objeto collector que presenta un objeto como lookup y una matriz de result para los datos finales agregados resuelve la tarea del OP en un paso de iteración...

 function collectSameGeoCategoryItems(collector, item) { const { lookup, result } = collector; const { properties: { User_ID }, type } = item; const groupKey = `${ type }_${ User_ID }`; let groupItem = lookup[groupKey]; if (groupItem) { // push coordinates copy into existing array of coordinate arrays. groupItem.geometry.coordinates.push([...item.geometry.coordinates]); } else { // create full copy of geo item in order // to not mutate the original reference. groupItem = lookup[groupKey] = { geometry: { type: item.geometry.type, coordinates: [ [...item.geometry.coordinates] ], }, type, properties: { User_ID }, }; result.push(groupItem); } return collector; } const sampleData = [{ geometry: { type: "Point", coordinates: [ -3.231658, 51.687026, ], }, type: "Feature", properties: { User_ID: 1002848324, }, }, { geometry: { type: "Point", coordinates: [ -3.231659, 51.687016, ], }, type: "Feature", properties: { User_ID: 1002848324, }, }, { geometry: { type: "Point", coordinates: [ -3.231658, 51.687026, ], }, type: "Foo", properties: { User_ID: 1002848324, }, }, { geometry: { type: "Point", coordinates: [ -3.231659, 51.687016, ], }, type: "Bar", properties: { User_ID: 1002848324, }, }, { geometry: { type: "Point", coordinates: [ -3.231658, 51.687026, ], }, type: "Foo", properties: { User_ID: 1000000000, }, }, { geometry: { type: "Point", coordinates: [ -3.231659, 51.687016, ], }, type: "Bar", properties: { User_ID: 1002848324, }, }]; console.log( 'aggregated `result` ...', sampleData.reduce(collectSameGeoCategoryItems, { lookup: {}, result: [] }).result ); console.log('unmutated sample data ... ', { sampleData }); console.log( 'aggregated `lookup`, not needed, just for demonstration purpose ...', sampleData.reduce(collectSameGeoCategoryItems, { lookup: {}, result: [] }).lookup );
 .as-console-wrapper { min-height: 100%!important; top: 0; }

about 4 years ago · Juan Pablo Isaza Relatório

0

Has deletreado var a "guerra", que debe ser 'var'. y si esto no es un error, especifique qué es la matriz 'características2'.

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda