MediaWiki-diskussion:Gadget-WikidataCoords.js
Några buggar
[redigera wikitext]@Nirmos:
- Funktionen decToDms fungerar inte på södra halvklotet. I och med att "Floor" avrundar nedåt och inte "mot 0". Se till exempel Camiri (kommun) som har koordinaterna 20°1′39″S,63°31′20″W, men finessen anger gradtalen till 20S respektive 64S istället för 19S respektive 63S.
- Fixat med detta plåster. Även formatfelet för Chaco (provins) (se nästa punkt) försvann. --Larske (diskussion) 3 mars 2019 kl. 11.33 (CET)
- Det finns något mer problem med avrundningar eller något som gör att vissa koordinater får ett felaktigt format, se till exempel
Chaco (provins),Alagoas och Bora-Bora. Det behövs någon rimlighetskontroll på formatet så att det inte blir felmeddelanden i dessa fall. --Larske (diskussion) 3 mars 2019 kl. 11.03 (CET)
- Larske: Tack! Jag övervägde att mata in decimala koordinater och låta Modul:Coordinates göra konverteringen. Tyvärr bli då även utdatat med decimala koordinater, vilket jag tror många tycker är fult, eller åtminstone svårförståeligt. Din lösning är mycket bättre.
Nu är väl även det andra felet löst? Jag ser inget konstigt längre.Sorry, gjorde ju på annat sätt i min JS. Jag ser felet oinloggad. Nirmos (diskussion) 3 mars 2019 kl. 11.50 (CET)- Det finns inget sätt att tvinga Mall:Coord att spotta ut DMS-koordinater, oavsett vad som anges? Det skulle lösa många problem. Nirmos (diskussion) 3 mars 2019 kl. 11.59 (CET)
- Att JavaScript tolkar värdet 0, som ibland förekommer som minut eller sekund i koordinaterna, som "false" gjorde att finessen ibland spottade ur sig ett format i coord som hade olika antal av D,M och S för latitud och longitud, något som tolkas som ett ogiltigt format. Jag såg det i Bora-Bora men hjälp av spårningsutskriften. Nu är koden ändrat så att det alltid blir D, M och S och därmed hoppas jag att felmeddelandena om ogiltigt format ska ha försvunnit.
- --Larske (diskussion) 3 mars 2019 kl. 12.15 (CET)
- Ja, jag gjorde så med flit för att inte skriva ut värdet om det var noll, men mallen gillade uppenbarligen inte det :D Tack så mycket! Nirmos (diskussion) 3 mars 2019 kl. 12.32 (CET)
- Man kan förfina det hela och låta värdet på "wikibase:geoPrecision" avgöra om man ska ange koordinaten med bara D, med D och M, eller med D, M och S, men det måste alltså vara samma "format" för latitud och longitud.
- --Larske (diskussion) 3 mars 2019 kl. 12.50 (CET)
- Ja, jag gjorde så med flit för att inte skriva ut värdet om det var noll, men mallen gillade uppenbarligen inte det :D Tack så mycket! Nirmos (diskussion) 3 mars 2019 kl. 12.32 (CET)
- Det finns inget sätt att tvinga Mall:Coord att spotta ut DMS-koordinater, oavsett vad som anges? Det skulle lösa många problem. Nirmos (diskussion) 3 mars 2019 kl. 11.59 (CET)
- Larske: Tack! Jag övervägde att mata in decimala koordinater och låta Modul:Coordinates göra konverteringen. Tyvärr bli då även utdatat med decimala koordinater, vilket jag tror många tycker är fult, eller åtminstone svårförståeligt. Din lösning är mycket bättre.
Månkratrar och liknande
[redigera wikitext]Tyvärr finns det över 7 000 objekt i Wikidata som har geografiska koordinater (P625) angivna trots att objektet inte finns på Jorden utan på någon annan himlakropp. Dessa geografiska koordinater (P625) borde egentligen tas bort i Wikidata, men risken är alltid att någon stoppar in dem igen. De objekt som definitivt är fel har ett värde på placering på astronomisk plats (P376) som inte är lika med jorden (Q2). Av dessa är det drygt 200 som har en artikel i svwp. De fick med denna finess en koordinat uppe till höger på sidan. Jag har gjort ett försök att undertrycka sådana koordinater. Det kan fortfarande dyka upp felaktiga koordinater för objekt där placering på astronomisk plats (P376) saknas, men förhoppningsvis är de inte så många. --Larske (diskussion) 3 mars 2019 kl. 16.26 (CET)
- Larske: Jag ser flera problem med de här ändringarna:
valueobject
är inte deklarerad.valueobject.numeric-id
tolkas somvalueobject[ 'numeric' ] - id
, vilket troligtvis inte är vad du vill. Det här gör i sin tur attid
inte är deklarerad. Du vill troligtvis havalueobject[ 'numeric-id' ]
.- Du återanvänder
snakobj
ochdatavalueobj
, vilket inte nödvändigtvis är ett problem, men det är oväntat och gör att när koden kommer ned till den andra if-satsen (P376ok && Array.isArray( geoarr )
), så har de här variablerna redan blivit tilldelade värden. Jag skulle helst se att helt olika variabler används. - Det är inte uppenbart för mig att att koordinater på andra himlakroppar bör undertryckas. Modul:Coordinates verkar acceptera en
globe
-parameter, och i beskrivningen för d:Property:P625 som du länkar till står det "geocoordinates of the subject. For Earth, please note that only WGS84 coordinating system is supported at the moment" vilket jag tycker implicerar att koordinater för andra himlakroppar är tillåtna. - Om man vill undertrycka koordinater på andra himlakroppar så finns det en egenskap som heter
globe
ivalueobj
. Det ska alltså räcka med en if-sats, ungefär så här:if ( valueobj.globe === 'http://www.wikidata.org/entity/Q2' ) { //Kod här kommer bara utföras om koordinaterna är på jorden }
- Nirmos (diskussion) 4 mars 2019 kl. 23.58 (CET)
- @Nirmos: Jag tror
inteatt "coordinates" klarar andra himlakroppar än jorden.Om den gör detMen då behöver värdet på "valuobject.globe" skickas med till den i "tpl". Som det är nu kommer man till en karta över jorden när man klickar på koordinaterna uppe till höger i någon av de 219 artiklarna enligt länken ovan. Det var det jag försökte undvika, men att gå via P376 var ju sämre än att direkt titta på "valueobject.globe". - --Larske (diskussion) 5 mars 2019 kl. 00.24 (CET)
- Förtydligande: Jo, "coordinates" klarar nog av globe, och när jag tittar så verkar även "geohack" (kartapplikationen) klara av åtminstone några himlakroppar. Men det behövs en översättning från till exempel
http://www.wikidata.org/entity/Q405
i "valueobj.globe" tillglobe:moon
i "tpl-strängen" så att man för Abetti (månkrater) hamnar här i stället för här. --Larske (diskussion) 5 mars 2019 kl. 00.52 (CET) - Tillägg: Här är en lista på vilka himlakroppar som supportas av kartapplikationen. --Larske (diskussion) 5 mars 2019 kl. 00.57 (CET)
- @Nirmos: Jag tror
- @Nirmos: Såg att du nu har fixat koordinater även för alla månkratrar, och ytterligare några himlakroppar.
- Främst Venus, Mars och Merkurius har mängder av koordinatsatta objekt i Wikidata. De flesta av dessa har inga artiklar i svwp. De har dock artiklar i enwp så det är väl bara en tidsfråga tills någon astronomiintresserad lägger in dem även i svwp.
- Länk till fråga som ger en lista över antal WD-objekt med geografiska koordinater (P625) per "globe", samt antal av dessa som har artiklar i svwp och enwp.
- När det blir många himlakroppar att ta hand om blir det en himla massa "else if" i koden. Själv är jag lite förtjust i tabellslagning i sådana fall. Se exempel nedan.
Med många "else if" | Med en "tabellslagning" |
---|---|
if ( valueobj.globe === 'http://www.wikidata.org/entity/Q111' ) {
globe = 'mars';
} else if ( valueobj.globe === 'http://www.wikidata.org/entity/Q308' ) {
globe = 'mercury';
} else if ( valueobj.globe === 'http://www.wikidata.org/entity/Q313' ) {
globe = 'venus';
} else if ( valueobj.globe === 'http://www.wikidata.org/entity/Q405' ) {
globe = 'moon';
} else if ( valueobj.globe === 'http://www.wikidata.org/entity/Q596' ) {
globe = 'ceres';
} else if ( valueobj.globe === 'http://www.wikidata.org/entity/Q3030' ) {
globe = 'vesta';
} else if ( valueobj.globe === 'http://www.wikidata.org/entity/Q3134' ) {
globe = 'callisto';
} else if ( valueobj.globe === 'http://www.wikidata.org/entity/Q3322' ) {
globe = 'titania';
} else if ( valueobj.globe === 'http://www.wikidata.org/entity/Q7547' ) {
globe = 'phobos';
} else if ( valueobj.globe === 'http://www.wikidata.org/entity/Q15034' ) {
globe = 'mimas';
} else if ( valueobj.globe === 'http://www.wikidata.org/entity/Q15047' ) {
globe = 'tethys';
} else if ( valueobj.globe === 'http://www.wikidata.org/entity/Q15050' ) {
globe = 'rhea';
}
|
var globenames = {
'Q111' : 'mars',
'Q308' : 'mercury',
'Q313' : 'venus',
'Q405' : 'moon',
'Q596' : 'ceres',
'Q3030' : 'vesta',
'Q3134' : 'callisto',
'Q3322' : 'titania',
'Q7547' : 'phobos',
'Q15034' : 'mimas',
'Q15047' : 'tethys',
'Q15050' : 'rhea'
};
globe = globenames[valueobject.globe.match(/Q[0-9]+$/)];
|