Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.

Reply
mattyj2009
Helper II
Helper II

Intentar crear una tabla que muestre si la latitud y longitud están dentro de un polígono GeoJSON

Buenas tardes

Tengo un archivo que se exporta desde uno de nuestros sistemas que tienen las columnas de Dirección, Latitud y Longitud. A continuación, tenemos un archivo GeoJSON que tiene los límites para varias áreas de servicio. Lo que queremos lograr es extraer (como una columna) el nombre del área de servicio del archivo GeoJSON.

Por lo tanto, el objetivo final sería tener una tabla que incluyese Dirección, Latitud, Longitud y Nombre de área de servicio.

Nuestro archivo GeoJSON tendría información como la siguiente. Nos gustaría tirar del campo de nombre por lo que en los ejemplos debajo de Downtown y East Roam si la dirección está dentro de la forma poligonal.

[  
   {  
      "id":1,
      "campaign_id":2,
      "name":"Downtown",
      "zone_type":"in_service",
      "people_goal":38,
      "zone_color":"#008000",
      "notes": "Notes for the Downtown Zone",
      "is_subzone":false,
      "parent_zone_id":null,
      "geojson":[  
         {  
            "type":"Feature",
            "properties":{  
               "id":1,
               "zone_name":"Downtown",
               "lg_id":34,
               "color":"#008000"
            },
            "geometry":{  
               "type":"Polygon",
               "coordinates":[  
                  [  
                     [  
                        -85.17772674676962,
                        34.25390581369373
                     ],
                     [  
                        -85.17626762506552,
                        34.251706537253966
                     ],
                     [  
                        -85.17695427057333,
                        34.248655832831254
                     ],
                     [  
                        -85.17618179437704,
                        34.247591607594714
                     ]
                  ]
               ]
            }
         }
      ]
   },
   {  
      "id":3,
      "campaign_id":2,
      "name":"East Rome",
      "zone_type":"extended",
      "people_goal":6,
      "zone_color":"#008000",
      "notes":"",
      "is_subzone":false,
      "parent_zone_id":null,
      "geojson":[  
         {  
            "type":"Feature",
            "properties":{  
               "id":3,
               "zone_name":"East Rome",
               "lg_id":37,
               "color":"#008000"
            },
            "geometry":{  
               "type":"Polygon",
               "coordinates":[  
                  [  
                     [  
                        -85.12825012207034,
                        34.25409499535699
                     ],
                     [  
                        -85.1257610321045,
                        34.25356291881514
                     ],
                     [  
                        -85.12086868286134,
                        34.25494631082515
                     ],
                     [  
                        -85.11108398437501,
                        34.23976322547396
                     ],
                     [  
                        -85.15262603759767,
                        34.261898398047876
                     ],
                     [  
                        -85.12825012207034,
                        34.25409499535699
                     ]
                  ]
               ]
            }
         }
      ]
   }
]

1 ACCEPTED SOLUTION
v-robertq-msft
Community Support
Community Support

Hola, @mattyj2009

A través de las operaciones en el editor de consultas Power, solo puedo obtener una tabla que contenga latitud y longitud, por lo que creo que debe crear una tabla para El este de Roma y el centro.

Para la tabla 'Roma', puede probar esta consulta M:

let

    Source = Json.Document(File.Contents("C:\ Desktop\geojson.json")),

    Source1 = Source{1},

    geojson = Source1[geojson],

    geojson1 = geojson{0},

    geometry = geojson1[geometry],

    coordinates = geometry[coordinates],

    coordinates1 = coordinates{0},

    #"Converted to Table" = Table.FromList(coordinates1, Splitter.SplitByNothing(), null, null, ExtraValues.Error),

    #"Extracted Values" = Table.TransformColumns(#"Converted to Table", {"Column1", each Text.Combine(List.Transform(_, Text.From), "#(tab)"), type text}),

    #"Split Column by Delimiter" = Table.SplitColumn(#"Extracted Values", "Column1", Splitter.SplitTextByDelimiter("#(tab)", QuoteStyle.Csv), {"Column1.1", "Column1.2"}),

    #"Changed Type" = Table.TransformColumnTypes(#"Split Column by Delimiter",{{"Column1.1", type number}, {"Column1.2", type number}})

in

    #"Changed Type"

Para la tabla 'Downtown', puede probar esta consulta M:

let

    Source = Json.Document(File.Contents("C:\ Desktop\geojson.json")),

    Source1 = Source{0},

    geojson1 = Source1[geojson],

    geojson2 = geojson1{0},

    geometry = geojson2[geometry],

    coordinates = geometry[coordinates],

    coordinates1 = coordinates{0},

    #"Converted to Table" = Table.FromList(coordinates1, Splitter.SplitByNothing(), null, null, ExtraValues.Error),

    #"Extracted Values" = Table.TransformColumns(#"Converted to Table", {"Column1", each Text.Combine(List.Transform(_, Text.From), "#(tab)"), type text}),

    #"Split Column by Delimiter" = Table.SplitColumn(#"Extracted Values", "Column1", Splitter.SplitTextByDelimiter("#(tab)", QuoteStyle.Csv), {"Column1.1", "Column1.2"}),

    #"Changed Type" = Table.TransformColumnTypes(#"Split Column by Delimiter",{{"Column1.1", type number}, {"Column1.2", type number}})

in

    #"Changed Type"

A continuación, puede crear un gráfico de mapa para 'Roma' y 'Downtown', como este:

v-robertq-msft_0-1602726649311.png

Si esto no es lo que desea, por favor responda a mí y muestre su salida esperada en una tabla o gráfico.

Saludos

Equipo de apoyo a la comunidad _Robert Qin

Si este post ayuda,entonces considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

View solution in original post

3 REPLIES 3
v-robertq-msft
Community Support
Community Support

Hola, @mattyj2009

A través de las operaciones en el editor de consultas Power, solo puedo obtener una tabla que contenga latitud y longitud, por lo que creo que debe crear una tabla para El este de Roma y el centro.

Para la tabla 'Roma', puede probar esta consulta M:

let

    Source = Json.Document(File.Contents("C:\ Desktop\geojson.json")),

    Source1 = Source{1},

    geojson = Source1[geojson],

    geojson1 = geojson{0},

    geometry = geojson1[geometry],

    coordinates = geometry[coordinates],

    coordinates1 = coordinates{0},

    #"Converted to Table" = Table.FromList(coordinates1, Splitter.SplitByNothing(), null, null, ExtraValues.Error),

    #"Extracted Values" = Table.TransformColumns(#"Converted to Table", {"Column1", each Text.Combine(List.Transform(_, Text.From), "#(tab)"), type text}),

    #"Split Column by Delimiter" = Table.SplitColumn(#"Extracted Values", "Column1", Splitter.SplitTextByDelimiter("#(tab)", QuoteStyle.Csv), {"Column1.1", "Column1.2"}),

    #"Changed Type" = Table.TransformColumnTypes(#"Split Column by Delimiter",{{"Column1.1", type number}, {"Column1.2", type number}})

in

    #"Changed Type"

Para la tabla 'Downtown', puede probar esta consulta M:

let

    Source = Json.Document(File.Contents("C:\ Desktop\geojson.json")),

    Source1 = Source{0},

    geojson1 = Source1[geojson],

    geojson2 = geojson1{0},

    geometry = geojson2[geometry],

    coordinates = geometry[coordinates],

    coordinates1 = coordinates{0},

    #"Converted to Table" = Table.FromList(coordinates1, Splitter.SplitByNothing(), null, null, ExtraValues.Error),

    #"Extracted Values" = Table.TransformColumns(#"Converted to Table", {"Column1", each Text.Combine(List.Transform(_, Text.From), "#(tab)"), type text}),

    #"Split Column by Delimiter" = Table.SplitColumn(#"Extracted Values", "Column1", Splitter.SplitTextByDelimiter("#(tab)", QuoteStyle.Csv), {"Column1.1", "Column1.2"}),

    #"Changed Type" = Table.TransformColumnTypes(#"Split Column by Delimiter",{{"Column1.1", type number}, {"Column1.2", type number}})

in

    #"Changed Type"

A continuación, puede crear un gráfico de mapa para 'Roma' y 'Downtown', como este:

v-robertq-msft_0-1602726649311.png

Si esto no es lo que desea, por favor responda a mí y muestre su salida esperada en una tabla o gráfico.

Saludos

Equipo de apoyo a la comunidad _Robert Qin

Si este post ayuda,entonces considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

Así que tengo una tabla que se exporta desde nuestro sistema. Tengo algunos datos de muestra a continuación (antes de cualquier modificación).

IdLatLonNúmeropredireccionalstreetnamestreettype
33139.904722-91.3668631201 Principal
433439.817275-91.3927273935 MaestrosAve
479039.80445043-91.367481351221 Unión
516539.810623-91.356699205NPrincipalSt
637639.775113-91.4032854121 MercadoSt
748739.839117-92.484838908WBourkeSt
759439.812558-91.3688771201 LyonSt
946239.907396-93.0832271701NEstadoSt
1590039.709727-92.93864227591 MortonRd
1624539.80383696-92.9560142826804 PinoRd
2049239.773696-92.94144430736 Carretera 15

Básicamente lo que queremos lograr es poner el nombre del área en la que se encuentra la latitud y la longitud y si no se encuentra dentro de ninguno de los polígonos del archivo GeoJSON, déjelo en blanco (nulo).

IdLatLonNúmeropredireccionalstreetnamestreettypeNombre
33139.904722-91.3668631201 Principal Centro
433439.817275-91.3927273935 MaestrosAveCentro
479039.80445043-91.367481351221 Unión Roma Oriental
516539.810623-91.356699205NPrincipalStRoma Oriental
637639.775113-91.4032854121 MercadoStNull
748739.839117-92.484838908WBourkeStNull
759439.812558-91.3688771201 LyonStRoma Oriental
946239.907396-93.0832271701NEstadoStCentro
1590039.709727-92.93864227591 MortonRdNull
1624539.80383696-92.9560142826804 PinoRdNull
2049239.773696-92.94144430736 Carretera 15 Null

Los datos anteriores son datos de muestra y sé que ninguno de los puntos no está dentro de East Rome o Downtown, pero se rellena para fines de muestra.

Hola, @mattyj2009

Desafortunadamente, supongo que no puedo obtener cuál es su salida esperada, pero aquí hay algunos blogs que coinciden bien con este caso. Puede echar un vistazo:

https://docs.oracle.com/en/database/oracle/oracle-database/19/adjsn/using-GeoJSON-geographic-data.ht...

https://radacad.com/how-to-do-power-bi-mapping-with-latitude-and-longitude-only

Saludos

Equipo de apoyo a la comunidad _Robert Qin

Si este post ayuda,entonces considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

Helpful resources

Announcements
Microsoft Fabric Learn Together

Microsoft Fabric Learn Together

Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

Check out the April 2024 Power BI update to learn about new features.

April Fabric Community Update

Fabric Community Update - April 2024

Find out what's new and trending in the Fabric Community.