Avståndsberäkningar mellan orter

Permalänk
Medlem

Avståndsberäkningar mellan orter

Baserad på mina tidigare trådar, vill jag göra nästa steg i min excel-matris:

I bifogad excel-fil har jag med hjälp av de tidigare trådarna nedan har jag flaggat 1,2,3 utifrån befolkningsmängd.

Jag vill dessutom flagga orter i "1", "2" eller "3" beroende på avståndsradie på 50km från andra orter som har befolkning i intervallerna: befolkningstal under 24999 ska flaggas med "3", befolkningstal mellan 25000 och 83999 flaggas med "2", befolkningstal över 84000 flaggas med "1".

Bifogar excel-filen:
https://www.dropbox.com/sh/fb2a9tvqe3h2835/AACbIq4zsFhcaDATTg...

Förtydliganden & excel-fil
Permalänk
Medlem

Excelformel

Behöver hjälp med en formel i Excel utifrån följande förutsättningar:
Om A1 är lika med eller större än 85000 = 1
Om A1 är lika med eller större än 25001 = 2
Om A1 är lika med eller mindre än 25000 = 3

Permalänk
Medlem

=IF(A1>=85000;1;(IF(A1<=25000;3;2)))

Under förutsättningen att resultatet ska bli två om talet är i intervallet 25001 och 84999.

förtydligande
Permalänk
Medlem
Skrivet av clnr:

=IF(A1>=85000;1;(IF(A1<=25000;3;2)))

Under förutsättningen att resultatet ska bli två om talet är i intervallet 25001 och 84999.

nja, det blir inte rätt.
jag vill att tal under 24999 ska flaggas med "3", tal mellan 25000 och 83999 flaggas med "2", tal över 84000 flaggas med "1".

Permalänk
Medlem

Finns en massa sätt att lösa det där på.

Fulaste lösningen är att tex i B1 skriva if(A1<24999;3;), och i B2 skriva if(and(a1>=25000;a1<=83999);2;) samt i b3 skriva if(a1>=84000;1;) för att sedan i b4 skriva sum(b1:b3) så har du svaret i b4

men nested if fungerar bättre.

edit. och varför jag visade en fullösning är för att ibland när det väldigt mycket if(if(if(, så kan det vara lättare att dela upp dessa i olika delar om man inte är så van att jobba så)

Visa signatur

I5 9600k@stock / Cooler Master Evo 212 / Gigabyte Z390 Gaming X / Corsair Vengeance LPX 16GB DDR4 3000MHz / MSI RTX2070 Gaming Z / EVGA 550 BQ / Asus VG27BQ 27" 165Hz

Ryzen 5 5600x@stock / Asus Rog Strix X570-E Gaming / Corsair Vengeance RGB Pro 16GB 3600MHz CL18 / MSI RTX3070 Suprim X / BeQuiet Pure Power 11 600W / Asus VG278Q 27" 144Hz

Permalänk
Medlem

Nested if blir =if(a1>=84000;1;if(and(a1>=25000;a1<=83999);2;3))

eller om du menade över 85000 som i orginalposten, så blir det

Nested if blir =if(a1>=85000;1;if(and(a1>=25000;a1<=84999);2;3)) men några poster under skriver 83999 så det var där jag tog först

Visa signatur

I5 9600k@stock / Cooler Master Evo 212 / Gigabyte Z390 Gaming X / Corsair Vengeance LPX 16GB DDR4 3000MHz / MSI RTX2070 Gaming Z / EVGA 550 BQ / Asus VG27BQ 27" 165Hz

Ryzen 5 5600x@stock / Asus Rog Strix X570-E Gaming / Corsair Vengeance RGB Pro 16GB 3600MHz CL18 / MSI RTX3070 Suprim X / BeQuiet Pure Power 11 600W / Asus VG278Q 27" 144Hz

Permalänk
Medlem

Koordinater/orter i excel

Jag behöver få fram koordinater för en (lång) lista med orter i excel. Finns det färdigt att ladda ned någonstans ifrån? Eller kan man köra en script i excel?

Permalänk
Medlem

Är det svenska orter du menar? SCB har öppen geodata för tätorter, småorter, fritidsområden tex.

https://www.scb.se/vara-tjanster/oppna-data/oppna-geodata

Permalänk
Medlem
Skrivet av nartub:

Är det svenska orter du menar? SCB har öppen geodata för tätorter, småorter, fritidsområden tex.

https://www.scb.se/vara-tjanster/oppna-data/oppna-geodata

jo, dit har jag hittat också men jag hittar inte excelfilen med koordinater på svenska orter

Permalänk
Medlem
Skrivet av Zippy242:

nja, det blir inte rätt.
jag vill att tal under 24999 ska flaggas med "3", tal mellan 25000 och 83999 flaggas med "2", tal över 84000 flaggas med "1".

Du har olika gränser i dina poster. Hursomhelst så funkar det för mig.

Till höger är min första lösning med värden i A-kolumnen och flaggan i B-kolumnen.
Till vänster har jag uppdaterat med värdena i din senare post. (D- respektive E-kolumnen).
Den formeln:

=IF(A1>84000;1;(IF(A1<25000;3;2)))

Permalänk
Medlem
Skrivet av CubaCola:

Nested if blir =if(a1>=84000;1;if(and(a1>=25000;a1<=83999);2;3))

eller om du menade över 85000 som i orginalposten, så blir det

Nested if blir =if(a1>=85000;1;if(and(a1>=25000;a1<=84999);2;3)) men några poster under skriver 83999 så det var där jag tog först

Tack, funkar nu

Permalänk
Medlem

Har aldrig testat just Sverige, men det finns ju en "Maps"-graf i Excel som du kan använda antar jag.

fast du kanske inte hade tänkt dig att plotta något på en karta ibland läser jag en massa mellan raderna

Visa signatur

I5 9600k@stock / Cooler Master Evo 212 / Gigabyte Z390 Gaming X / Corsair Vengeance LPX 16GB DDR4 3000MHz / MSI RTX2070 Gaming Z / EVGA 550 BQ / Asus VG27BQ 27" 165Hz

Ryzen 5 5600x@stock / Asus Rog Strix X570-E Gaming / Corsair Vengeance RGB Pro 16GB 3600MHz CL18 / MSI RTX3070 Suprim X / BeQuiet Pure Power 11 600W / Asus VG278Q 27" 144Hz

Permalänk
Medlem
Skrivet av clnr:

Du har olika gränser i dina poster. Hursomhelst så funkar det för mig.
https://imgur.com/62UjKqA
Till höger är min första lösning med värden i A-kolumnen och flaggan i B-kolumnen.
Till vänster har jag uppdaterat med värdena i din senare post. (D- respektive E-kolumnen).
Den formeln:

=IF(A1>84000;1;(IF(A1<25000;3;2)))

Tack, funkar nu

Permalänk

Jag laddade ner sqllite3 databasen från scb, gjorde om den till csv och läste in den i excel.

https://www.motorfilm.se/temp/koordinater_orter.xlsx

Permalänk
Medlem

Kontakta lantmäteriet och fråga.

Permalänk
Medlem
Skrivet av PederBejegard:

Jag laddade ner sqllite3 databasen från scb, gjorde om den till csv och läste in den i excel.

https://www.motorfilm.se/temp/koordinater_orter.xlsx

Stort tack

Permalänk
Medlem

Om du ska ha hjälp baserat på tidigare trådar får du nog -- åtminstone -- länka in sagda trådar

Visa signatur

:(){ :|:& };:

🏊🏻‍♂️   🚴🏻‍♂️   🏃🏻‍♂️   ☕

Permalänk
Hedersmedlem

Hej! Det framgår inte exakt av ditt inlägg, men jag antar att du har ett kalkylblad med en lista på orter, och i det bladet har info om namn, koordinater och befolkningsmängd av dina orter.

Utifrån detta vill du flagga orter beroende på befolkning, men jag förstår inte vad du menar med avstånd? Avstånd varifrån? Avstånd mellan varje ort till varje annan ort? Eller alla mätt från någon slags centralort?

Om det är alla från en centralort så är det rätt enkelt, du får lägga till en beräknad kolumn som då räknar fram avståndet till denna centralort. Det svåra blir då att leta rätt på en matematisk formel för att räkna ut avståndet mellan två orter givet dess koordinater. Om orterna ligger rätt nära varandra så blir förmodligen det nära nog för dina syften att bara anta att jorden är en sfär och använda trigonometri.

Permalänk
Medlem

Man kan säkert använda google maps api via excel för att få fram avstånd skulle jag gissa på.

Visa signatur

I5 9600k@stock / Cooler Master Evo 212 / Gigabyte Z390 Gaming X / Corsair Vengeance LPX 16GB DDR4 3000MHz / MSI RTX2070 Gaming Z / EVGA 550 BQ / Asus VG27BQ 27" 165Hz

Ryzen 5 5600x@stock / Asus Rog Strix X570-E Gaming / Corsair Vengeance RGB Pro 16GB 3600MHz CL18 / MSI RTX3070 Suprim X / BeQuiet Pure Power 11 600W / Asus VG278Q 27" 144Hz

Permalänk
Hedersmedlem

Gjorde ett kalkylblad som beräknade avstånd mellan alla orter i din tabell. Excel får jobba rejält med denna uträkning. Vill du sedan lägga villkor på detta, säg "Hur många invånare finns inom en 10km radie?" så kommer nog Excel att mer eller mindre ge upp. Du behöver en databas istället där du kan ställa detta som en fråga.

Visa signatur

Använd gilla för att markera nyttiga inlägg!

Permalänk
Hedersmedlem
Skrivet av pv2b:

Hej! Det framgår inte exakt av ditt inlägg, men jag antar att du har ett kalkylblad med en lista på orter, och i det bladet har info om namn, koordinater och befolkningsmängd av dina orter.

Utifrån detta vill du flagga orter beroende på befolkning, men jag förstår inte vad du menar med avstånd? Avstånd varifrån? Avstånd mellan varje ort till varje annan ort? Eller alla mätt från någon slags centralort?

Om det är alla från en centralort så är det rätt enkelt, du får lägga till en beräknad kolumn som då räknar fram avståndet till denna centralort. Det svåra blir då att leta rätt på en matematisk formel för att räkna ut avståndet mellan två orter givet dess koordinater. Om orterna ligger rätt nära varandra så blir förmodligen det nära nog för dina syften att bara anta att jorden är en sfär och använda trigonometri.

Med Swe99_TM koordinatsystemet så ska man helt enkelt använda phytagoras sats på x och y koordinaterna för att få avståndet i meter.

Visa signatur

Använd gilla för att markera nyttiga inlägg!

Permalänk
Medlem
Skrivet av GLaDER:

Om du ska ha hjälp baserat på tidigare trådar får du nog -- åtminstone -- länka in sagda trådar

Fixat

Permalänk
Hedersmedlem
Skrivet av giplet:

Gjorde ett kalkylblad som beräknade avstånd mellan alla orter i din tabell. Excel får jobba rejält med denna uträkning. Vill du sedan lägga villkor på detta, säg "Hur många invånare finns inom en 10km radie?" så kommer nog Excel att mer eller mindre ge upp. Du behöver en databas istället där du kan ställa detta som en fråga.

Jo, en databas är förmodligen att föredra för syftet.

Men en grej som kanske kan snabba upp och förenkla det hela rätt rejält är om man tar fram en matris som det är lätt att slå upp avståndet mellan ort A och ort B i.

En annan grej som skulle kunna snabba upp frågorna är om man först letar upp alla orter som är inom en 10x10 km ruta kring den intressanta orten, och sedan bara för dessa orter reder ut om avståndet är mindre än 10 km. Det skulle ju minska antalet avståndsberäkningar rätt rejält.

Permalänk
Medlem
Skrivet av giplet:

Gjorde ett kalkylblad som beräknade avstånd mellan alla orter i din tabell. Excel får jobba rejält med denna uträkning. Vill du sedan lägga villkor på detta, säg "Hur många invånare finns inom en 10km radie?" så kommer nog Excel att mer eller mindre ge upp. Du behöver en databas istället där du kan ställa detta som en fråga.

Just precis, hur gör jag?

Permalänk
Hedersmedlem
Skrivet av Zippy242:

Just precis, hur gör jag?

Att få upp hur många invånare som finns inom 10 km radie går inte att få fram med din data, däremot så kan du få fram hur många invånare som finns i en viss ort + andra eventuella orter med sina centrum inom 10 km. Det är inte riktigt samma sak.

Vad är det exakt du vill räkna ut?

Permalänk
Medlem
Skrivet av pv2b:

Att få upp hur många invånare som finns inom 10 km radie går inte att få fram med din data, däremot så kan du få fram hur många invånare som finns i en viss ort + andra eventuella orter med sina centrum inom 10 km. Det är inte riktigt samma sak.

Vad är det exakt du vill räkna ut?

kolla förtydligandet

Permalänk
Hedersmedlem
Skrivet av Zippy242:

kolla förtydligandet

Jag förstår fortfarande inte vad du menar med detta:

Citat:

Jag vill dessutom flagga orter i "1", "2" eller "3" beroende på avståndsradie på 50km mellan orter som har befolkning i intervallerna: befolkningstal under 24999 ska flaggas med "3", befolkningstal mellan 25000 och 83999 flaggas med "2", befolkningstal över 84000 flaggas med "1".

Du har inte förklarat tydligt nog så att det går att förstå vad du menar

Permalänk
Medlem

Jag skulle säga att Excel kanske inte är lämpligaste plattformen för det här. Koordinatberäkningar blir ofta rätt krävande, och Excel är generellt rätt dåligt på att hantera sån data (konstiga decimalfel kan bli förödande). Jag skulle välja ett GIS-program. Det är optimerat för sådan data och innehåller oftast redan färdiga beräkningsmodeller för just de frågor du har. Jag använder mest DIVA-GIS på jobbet, för just den här typen av frågor, fast då som biolog (t.ex hur många arter finns inom X radie från Y plats om Z). Att importera tabellerna från Excel brukar vara en lätt match, sen är det bara att börja räkna.

Permalänk
Medlem
Skrivet av Emma242:

Jag skulle säga att Excel kanske inte är lämpligaste plattformen för det här. Koordinatberäkningar blir ofta rätt krävande, och Excel är generellt rätt dåligt på att hantera sån data (konstiga decimalfel kan bli förödande). Jag skulle välja ett GIS-program. Det är optimerat för sådan data och innehåller oftast redan färdiga beräkningsmodeller för just de frågor du har. Jag använder mest DIVA-GIS på jobbet, för just den här typen av frågor, fast då som biolog (t.ex hur många arter finns inom X radie från Y plats om Z). Att importera tabellerna från Excel brukar vara en lätt match, sen är det bara att börja räkna.

Hade gärna använt mig av ett GIS-program men jag har inte den möjligheten att ordna det.

Permalänk
Medlem
Skrivet av Zippy242:

Hade gärna använt mig av ett GIS-program men jag har inte den möjligheten att ordna det.

Med DIVA-GIS är gratis: https://www.diva-gis.org/