From OpenStreetMap Wiki
Jump to navigation Jump to search

Additional elements to plant:output:electricity

  1. Standby
  2. Prime
  3. Continuous
  4. Dependable

Standby, Prime, Continuous ratings as per ISO 8528 and Dependable power as the sum of factors as described in IEC 62853:2018 as per TC56 workgroup set.

Rationale is for making grid assessments that standby power can not be used for more than 250 hours/year, prime power can be relied on for servicing the main area with +10% more power and continuous power is the normal. Dependable power also includes the state of the engines and the methods a (group of) generators is used. Dependable power for renewable generation can be given when local storage is applied, solar and wind are combined, and/or can absorb fluctuations caused by dropping of generators.

Combination of parameters can determine how much renewable can be injected in an aging park & grid

--GerGroeneveld (talk) 05:24, 3 April 2021 (UTC)

Thank you for this input, it sounds really valuable when it comes to describe power plants role in energy supply.
However, output keys aren't intended to state a role in the power grid but to give an amount of power the feature outputs.
It would require a formal proposal to introduce a new key dedicated to such a property. Would you get involved in this writing?

--Fanfouer (talk) 21:29, 3 April 2021 (UTC)

Sure I liked to get involved.
Suggestion 1. key output_role: { standby|prime|continuous|dependable } = xxx VA|kVA|MVA. output can be kept to show its power output (in Watts) in its common role.
VA as in other roles as normal the grid load may be different as what it is normally and output of the device may be different.

--GerGroeneveld (talk) 02:51, 4 April 2021 (UTC)

Data Cleaning Needed

Hi! I've been trying to figure out what is the total plant:output:electricity of power plants on OSM. I used a SPARQL query and took numerous iterations to accommodate all different ways of how people write these values. As you can see, there are many violations of the mandated format. It would be great to somehow clean this up, and prevent future violations?

SELECT (concat("'",?unit,"'") as ?unit) (count(*) as ?c) (sum(?gw) as ?gw) {
  ?x osmt:plant:output:electricity ?out1
  bind(replace(?out1,",",".") as ?out2) # decimal comma to decimal point
  bind(replace(?out2,"yes;?|no|~|_|\\*|ca\\.|expected|\\?","") as ?out3) # remove yes/no and "approximately" indicator
  bind(replace(?out3,"^([0-9.]*) *","$1") as ?out4) # remove leading space and space inside number
  bind(replace(?out4,"^2x250","500") as ?out5)
  bind(replace(?out5,"^2x460","920") as ?out6)
  bind(replace(?out6,"600MW; 660 MW","1260 MW") as ?out7)
  bind(replace(?out7,"44kw×3\\+33kw","165 kw") as ?out8)
  bind(replace(?out8,"94;143 MW","237 MW") as ?out9)
  bind(replace(?out9,"0.4 Mw \\+ 0.8 Mw","1.2 MW") as ?out)
  bind(xsd:double(replace(?out,"^([0-9.]+).*","$1")) as ?num) # numeric part
  bind(replace(?out,"^[0-9.]+ *(.*) *$","$1") as ?unit) # non-numeric part
       if(regex(?unit,"^(MW|MWh|mW|Mw|MWp|MWc|MWM|MV|M|MVA|МВт|MW MW|M|MW;|MW DC|MW3|MWP|MWe|MWac)$"),1e-3,
       if(?unit="",1e-3, # Assume empty unit is MW. Confirmed by examining 5 plants: ?x osmt:plant:output:electricity ?out filter(regex(?out,"^[1-9][0-9]*$"))
       ?UNDEF)))))))) as ?factor)
  bind(?num * ?factor as ?gw)
 } group by ?unit order by desc(?gw)


  • Using field "plant:output" instead of "plant:output:electricity"
  • Decimal comma vs decimal point
  • Both point and comma used, eg plant:output "1.449,60 kWp"
  • Mixing boolean and number, eg "yes;123 Mw"
  • "0" instead of "no" (number instead of boolean)
  • "approximately" indicator: ~, *, ca., expected, ?
  • space inside a number, eg "0. 123"
  • expressions rather than simple numbers, eg "2x250 Mw", "44kw×3+33kw", "600 MW; 660 MW", "0.4 Mw + 0.8 Mw"
  • spelling variations of units kW and MW (about 30) including in Russian
  • unusual units: "GWh/year", "Гкал/ч", "kWh/an" (annum=year)
  • Wrong unit: total energy instead of power: plant:output "22300 MWh"
  • empty (missing) unit: I assumed that represents MW, which I have confirmed by examining 5 plants found with this SPARQL:
  ?x osmt:plant:output:electricity ?out filter(regex(?out,"^[1-9][0-9]*$"))

Total GW=410567.26, coming from 15527 records with number, 25632 records with factor.

  • However, if we compare to some other world-wide power plant databases, the assumption "missing means MW" seems wrong.
  • Eg WRI Powerwatch has GW=5707 and records=34936

--Vladimir Alexiev (talk) 18:07, 8 January 2022 (UTC)


Yes, it would certainly be nice to clean these up. For OpenInfraMap I generally ignore values which look too weird - this is the logic I use. At some point I'd like to make a validator which checks these.

Incidentally I calculate per-country power plant stats here, which should make it relatively easy to spot cases where the number is completely wrong. Russss (talk) 11:07, 9 January 2022 (UTC)

Thanks @Russss:! Your code will process 29972 outputs, as per the following SPARQL:

  ?x osmt:plant:output:electricity|osmt:generator:output:electricity|osmt:plant:output|osmt:generator:output ?out
  filter regex(?out,"^[0-9]+[.,]?[0-9]* ?([KMG]?W)?$","i")

Your code assumes "no unit" means "W" but I think that's not realistic (too low). I think "no unit" is a mixture of kW and MW :-(

In addition, there are about 1260 salvageable outputs, as per this SPARQL

  ?x osmt:plant:output:electricity|osmt:generator:output:electricity|osmt:plant:output|osmt:generator:output ?out
  filter(!regex(?out,"^([0-9]+[.,]?[0-9]* ?([KMG]?W)?|yes|yes/kW|no|yes;no|unknown|fixme|heat|gas|biogas|wood cutting|H²|pond|water|hot_water|electric|electricity|small|small[_ ]installation[s3]?|small_installatin|small_insallation|small_installaton|yes;small_installation|small_installationcomplex text|big_installation|minor_installation|cogeneration|Elevation|communication|\\*|\\? MW|Block \\d)$","i"))

Of them, the most important are those with a suffix, eg "MWp", "MWe", etc.

I fixed about 20 values, but can anyone advise how I can go about automating this, or organizing a data fixing "campaign" for this problem? --Vladimir Alexiev (talk) 13:34, 13 January 2022 (UTC)

Another problem is that sometimes the wrong tag is used to record the output value. All of the following are used:

  • plant:output:electricity
  • generator:output:electricity (sometimes emitted against power="plant" which is wrong)
  • source:plant:output:electricity
  • plant:output
  • generator:output

--Vladimir Alexiev (talk) 12:49, 17 January 2022 (UTC)


From correspondence with @Muralito: MVA and MW are different units, and are not interchangeable.

  • According to they are the same (volt ampere = watt)
  • But according to more in-depth sources like, they are not the the same
  • To convert between them, you have to know the "power factor" and difference between active/reactive power, which can be different for each object. The problem is that this power factor is not always published.
  • MW is real effective power, MVA is Apparent Power. MVA is always an upper bound for MW, as the power factor is always <= 1 (MVA is an upper bound for the power output value of the equipment)
  • Some specifications use MW as unit, other specifications use MVA. Since the value in MVA is greater than the value in MW, some vendors tend to use MVA (as a marketing trick)

Key:plant:output currently specifies using MW or kW, and it would be great if everyone used comparable units.

  • But when data is not available in those units, and because it is not a direct easy conversion, editors should tag the power output in MVA or kVA.

With this clarification, here's a refined query that finds candidates for fixing: values that include a number, but are not wholly made of a number plus a unit (W, VA, and their decimal multiplicative units) --Vladimir Alexiev (talk) 13:21, 19 January 2022 (UTC)

  ?x osmt:plant:output:electricity|osmt:generator:output:electricity|osmt:plant:output|osmt:generator:output ?out
  filter(!regex(?out,"^([0-9]+[.]?[0-9]* ?([KMG]?(W|VA))$","i"))
Hi @Vladimir Alexiev:, that's a good point, units aren't consistent in the occurrences of this key. However, it seems there is no good practice when it comes to document outputs of generators. In a perfect world, we should give the whole abacus of each generator. Both MW and MVA values are a small part of the complex figures of generators.
It should then be ok to give MVA and MW values with appropriate units. You're indeed not able to convert between real and apparent power since you don't know physical limits of the power generator it qualifies.
It's not only about the power factor, but physical limits of generator (especially for real power: regarding high power generators, real power is often limited for power factors [1 ; 0.85[).
Power market people would say there is only real power that maters (it is mandatory for European power producers to publish real power figures, not reactive power ones), reactive power is not valued through markets. From a technical point of view, many things maters but we have to choose one figure for this key.
I'll try to improve this page to document this in a more appropriate way Fanfouer (talk) 18:24, 20 January 2022 (UTC)
  • Thanks for the input @Fanfouer:! Powerplant databases (ENTSOE, FRESNA, PyPSA, JRC, OPPD, etc) include output in MW (real power), that's why it's strongly preferred to have that output, if you want to estimate the completeness of OSM re power plants and generators --Vladimir Alexiev (talk) 11:03, 15 February 2022 (UTC)

Fixing with Sophox Editor

Sophox Editor is a great way to define fixing challenges using SPARQL queries. The page explains very well how to write queries.

  • Then it shows fixes on a global map. One needs to zoom very closely before saving the fix is allowed, and need to confirm each fix by hand
  • Quick fixes is the current collection of fixing tasks. Eg Quick fixes#Multiple Choice Challenges shows a query Make power=station more specific to disambiguate it to substation, plant, generator:
#defaultView:Editor{ "comment":"Make power=station more specific", "taskId":"depr_power_station", "labels":{ "a":"Substation", "b": "Power plant", "c": "Generator" }, "vote":false }
  ?id  ?loc
  (osmt:power as ?tag_a1)  ('substation' as ?val_a1)
  (osmt:power as ?tag_b1)  ('plant'      as ?val_b1)
  (osmt:power as ?tag_c1)  ('generator'  as ?val_c1)
  ?id osmt:power 'station' .
  ?id osmm:loc ?loc .

Run it (edit query)

  • I'm sure we can adapt the queries above to generate such fixes for plant:output

@Muralito and Fanfouer: Can you help, or do you know others I can ping for help? I may be able to coopt some colleague at Ontotext to help with this --Vladimir Alexiev (talk) 11:12, 15 February 2022 (UTC)