15.258
Bearbeitungen
Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
| Zeile 29: | Zeile 29: | ||
local geoobjects = {} | local geoobjects = {} | ||
local minimum_one_geocode_ok = false | local minimum_one_geocode_ok = false | ||
-- locationlist und location zusammenführen | |||
local locations_merged = str.splitAndStrip(args["locationlist"] or "", ";") | |||
local location = str.strip(args["location"] or "") | |||
if location ~= "" then | |||
table.insert(locations_merged, args["location"] .. | |||
"~" .. (args["popuptitle"] or "") .. | |||
"~" .. (args["popuptext"] or "")) | |||
end | |||
-- alle locations durchiterieren und für jedes ein subobject erstellen | |||
for _, l in ipairs(locations_merged) do | |||
local geoobject_entry = {} | |||
-- Aufteilung location ~ popuptitle ~ popuptext | |||
l = str.split2(l, "~") | |||
local location = str.strip(l[1] or "") | |||
local popuptitle = str.strip(l[2] or "") | |||
local popuptext = str.strip(l[3] or "") | |||
-- Prüfung Koordinate (Zahl) oder textuelle Objektlokation | |||
-- wenn Objektlokation und Ehemals, dann nicht auswerten | |||
if location ~= "" and | |||
string.match(location, "%d") == nil and | |||
com.isTrue(args["Ehemals"]) then | |||
location = "" | |||
t = t .. "[[Kategorie:Hat Objektlokation, ist aber ehemaliges Objekt]]" | |||
end | |||
-- location geocode | |||
if location ~= "" then | if location ~= "" then | ||
geoobject_entry["Geolokation"] = location | |||
local geocode = geocode(frame, location) | |||
if geocode ~= "Geocoding failed" then | |||
geoobject_entry["Geokoordinate"] = geocode | |||
minimum_one_geocode_ok = true | |||
else | |||
t = t .. "[[Kategorie:Hat Geo-Kodierungsfehler]]" | |||
smw_geokoordinate = mw.smw.ask( | |||
"[[-Has subobject::" .. pagename .. "]]" .. | |||
"[[Geolokation::" .. location .. "]]" .. | |||
"|?Geokoordinate|limit=1") | |||
if smw_geokoordinate ~= nil and | |||
smw_geokoordinate[1]["Geokoordinate"] ~= nil then | |||
t = t .. "[[Kategorie:Hat Geo-Kodierungsfehler, aber noch Geokoordinate in SMW-DB]]" | |||
geoobject_entry["Geokoordinate"] = | |||
smw_geokoordinate[1]["Geokoordinate"] | |||
minimum_one_geocode_ok = true | minimum_one_geocode_ok = true | ||
end | end | ||
end | end | ||
end | end | ||
geoobject_entry["KartePopupTitle"] = popuptitle | |||
geoobject_entry["KartePopupText"] = popuptext | |||
geoobjects:insert(geoobject_entry) | |||
end | end | ||
-- geocode lon/lat | -- geocode lon/lat | ||
if (not minimum_one_geocode_ok or com.isTrue(args["Ehemals"])) and args["lat"] ~= nil and args["lon"] ~= nil then | if (not minimum_one_geocode_ok or com.isTrue(args["Ehemals"])) and args["lat"] ~= nil and args["lon"] ~= nil then | ||
local geocode = frame | local geocode = geocode(frame, args["lat"] .. "," .. args["lon"]) | ||
if geocode ~= "Geocoding failed" then | if geocode ~= "Geocoding failed" then | ||
local geoobject_entry = { | local geoobject_entry = {["Geokoordinate"] = geocode} | ||
geoobject_entry["KartePopupTitle"] = popuptitle | |||
geoobject_entry["KartePopupText"] = popuptext | |||
geoobjects:insert(geoobject_entry) | |||
end | end | ||
end | end | ||
| Zeile 108: | Zeile 104: | ||
mw.logObject(t, "t") | mw.logObject(t, "t") | ||
return t | return t | ||
end | |||
function geocode(frame, l) | |||
return frame:callParserFunction( | |||
"#geocode", {l, format="float", directional="no"}) | |||
end | |||
function set_popuptitle_popuptext(geoobject_entry, popuptitle, popuptext) | |||
end | end | ||
return p | return p | ||