Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

127
Views
¿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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!