Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

135
Vistas
¿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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda