Wie Länge des Hochspannungsnetzes ermitteln ?

Hallo!
Ich würde gerne für Deutschland die Gesamtlänge des bei OSM erfassten 110kV-Hochspannungsnetzes herausbekommen und habe bislang nur herausgefunden, dass man die Daten der einzelnen Bundesländer bei Geofabrik herunterladen kann. Und das diese per osmosis gefiltert werden können. Nur leider habe ich keine Ahnung, wie ich mit diesem Programm umgehen muss und ich steige nicht ganz durch die beschreibung bei wiki durch.

Wäre toll, wenn mir jemand weiterhelfen könnte!!!

Vorab: Willkommen im Forum …

Dein Vorhaben ist m.E. schwieriger als es zunächst scheint.

Erst aber mal eine Reihe von Fragen:

  • Ist nur das 110kV-Netz ist gewünscht (keine 60 / 220 / 380 kV) ?
  • Überlandleitungen, Erdkabel, Seekabel oder alles ?
  • Möchtest du eine Karte erstellen oder am Ende nur eine Zahl haben ?

Gruß Klaus

PS: Der Name des Threads ist etwas ungünstig - besser vielleicht: “Wie Länge des Hochspannungsnetzes ermitteln ?”

Wegelängen der verschiedenen Werte mit dem Key voltage= aus der Geofabrik File germany.osm.pbf von gestern

0 228.0km
1000 8.7km
10000 297.6km
10000;400 0.0km
11000 13.2km
110000 41145.6km
1100000 0.3km
110000;0 39.8km
110000;10000 13.2km
110000;10500 0.3km
110000;11000 4.6km
110000;15000 34.9km
110000;20000 383.6km
110000;25000 4.5km
110000;30000 20.7km
110000;35000 17.9km
110000;35000;10000 3.0km
110000;medium 1.4km
12 0.0km
1200 20.2km
12000 0.2km
132000 51.5km
132000;110000 1.0km
132000;110000;15000 0.6km
1500 73.6km
15000 34729.4km
150000 169.1km
2000 0.3km
20000 2142.1km
20000;10000 0.9km
20000;400 0.1km
220 0.7km
220000 6042.7km
220000;0 29.6km
220000;110000 1406.0km
220000;110000;20000 3.7km
220000;110000;25000 0.3km
225000 40.0km
230 1.4km
240 0.8km
25000 72.9km
27000 0.1km
3000 66.4km
30000 300.7km
300000 0.7km
30000;6000 0.1km
35000 125.1km
35000;20000 3.6km
35000? 0.3km
35000|10000 1.6km
380 0.3km
380000 8447.9km
380000;0 25.7km
380000;110000 987.9km
380000;110000;20000 2.5km
380000;20000 11.1km
380000;220000 1940.1km
380000;220000;0 7.0km
380000;220000;110000 541.5km
380000;220000;110000;25000 1.2km
380000;220000;25000 1.5km
400 34.0km
40000 1.1km
400000 174.8km
420000 0.3km
450000 252.5km
500 2.9km
600 523.9km
6000 17.4km
60000 300.8km
600;750 185.0km
63000 75.9km
650 3.2km
65000 33.4km
6600 133.7km
750 2568.1km
800 252.0km
fixme 168.8km
high 5.6km
medium 12.0km
medium;low 0.0km
none 0.0km

Hey, danke :)!

  • Ja, es geht mir nur um die insgesamt aktuell durch OMS erfasste Länge des 110kV Netzes.
  • Die Unterscheidung zwischen der Art der Leitung ist erstmal nicht so wichtig.
  • Eine Karte wäre toll. Aber zunächst ist erstmal nur diese eine Zahl für mich relevant.

LG!

oh, die Werte oben beinhalten auch Oberleitungen (falls die auch mit 110kv betrieben werden …keine Ahnung ob es das gibt). Falls die nicht dabei sein sollen, müsste ich vorfiltern

hier nun nur power=line + voltage=* Werte

0 154.1km
10000 24.6km
11000 11.8km
110000 39495.2km
110000;0 39.8km
110000;10000 13.0km
110000;11000 4.6km
110000;15000 12.5km
110000;20000 379.7km
110000;25000 4.5km
110000;30000 20.0km
110000;35000 17.4km
110000;35000;10000 3.0km
110000;medium 1.3km
132000 17.1km
132000;110000 1.0km
15000 9.1km
150000 43.4km
2000 0.3km
20000 532.8km
20000;10000 0.3km
220000 5822.3km
220000;0 29.6km
220000;110000 1360.4km
220000;110000;20000 3.7km
220000;110000;25000 0.3km
225000 40.0km
25000 0.2km
27000 0.0km
30000 108.1km
35000 23.3km
35000? 0.1km
380000 7933.9km
380000;0 25.7km
380000;110000 945.9km
380000;110000;20000 2.5km
380000;20000 11.1km
380000;220000 1919.1km
380000;220000;0 7.0km
380000;220000;110000 524.0km
380000;220000;110000;25000 1.2km
380000;220000;25000 1.5km
400 0.6km
40000 1.1km
400000 120.8km
420000 0.3km
450000 252.5km
500 0.9km
6000 1.4km
60000 297.7km
63000 75.9km
65000 33.3km
fixme 10.6km
high 5.6km
medium 5.1km

Vielen Dank!!!
Kannst du mir vielleicht auch erklären, wie ich diese Werte flitern kann? Ich habe bislang osmosis installiert und die Datei germany.osm.pbf heruntergeladen.

Ich dachte ich kann diese Datei dann über die Eingabeauforderung von Windows aufrufen, aber immer wenn ich das veruche erscheint nur der Text: “SCHWERWIEGEND: Execution aborted” als Fehler Meldung und noch sehr viel mehr Text.

Die Oberleitungen müsste ich dann noch herausfiltern, weil ich nur das Energieversorgungsnetz benötige.

LG

Thomas hat dir schon nur die “Powerlines” gegeben - das beinhaltet keine Oberleitungen mehr (vorausgesetzt es wurde richtig getagged - das wiederum findest du aber nur raus wenn du railway und powerline auswerfen lässt.

Zu deinem Error: Was ist dein Input?

Du bräuchtest Osmium, müsstest ein C++ Programm kompilieren und dabei verschiedene Libaries einbinden :wink: Der zweite Datensatz beinhaltet nur power=line (siehe http://wiki.openstreetmap.org/wiki/DE:Tag:power%3Dline))
Das müsste die Zahl sein, die Du suchst

http://download.geofabrik.de/osm/europe/
hier habe ich die Datei heruntergeladen

und dann??? windows-mäßig draufgeklickt :wink:

also Butter bei die Fische: Befehle, Fehlermeldungen, SCREENSHOTS - alles was greifbar ist.

Gruss
walter

Ich habe jetzt das Programm Osmium heruntergeladen und C++2010 Express. Wie müsste ich nun weiter vorgehen, damit ich auf die entsprechenden Daten der Datei "gemany.osm.pbf "zugreifen kann?

zusätzlich brauchst doch dann noch einige Libaries - siehe unten-. Nicht unbedingt alle, aber ohne den Quellcode zu studieren, kann ich Dir nicht sagen, welche Libaries zu weglassen kannst. Das eigentliche C++ Programm (war ursprünglich für highways) ist nicht so dramatisch, aber wie man das unter Windows kompiliert, weiß ich nicht

boost (several libraries)
http://www.boost.org/
Debian/Ubuntu: libboost-dev

zlib (for PBF support)
http://www.zlib.net/
Debian/Ubuntu: zlib1g-dev

shapelib (for shapefile support in osmjs)
http://shapelib.maptools.org/
Debian/Ubuntu: libshp-dev

libsqlite3 (for some applications only)
http://sqlite.org/
Debian/Ubuntu: libsqlite3-dev

libgd (for tagstats and nodedensity applications only)
http://www.libgd.org/
Debian/Ubuntu: libgd2-xpm-dev

GDAL (for OGR support)
http://gdal.org/
Debian/Ubuntu: libgdal1-dev

[http://expat.sourceforge.net/](http://expat.sourceforge.net/)
Debian/Ubuntu: libexpat1-dev

GEOS (for assembling multipolygons etc.)
http://trac.osgeo.org/geos/
Debian/Ubuntu: libgeos-dev

Google sparsehash
http://code.google.com/p/google-sparsehash/
Debian/Ubuntu: libsparsehash-dev

Google V8 Javascript engine (for Javascript support)
http://code.google.com/apis/v8/
Debian/Ubuntu: libv8-dev

LibICU (for UTF-8/UTF-16 conversion, only for Javascript support)
http://site.icu-project.org/
Debian/Ubuntu: libicu-dev

Google protocol buffers (for PBF support)
http://code.google.com/p/protobuf/ (at least Version 2.3.0 needed)
Debian/Ubuntu: libprotobuf-dev protobuf-compiler
Also see http://wiki.openstreetmap.org/wiki/PBF_Format

Doxygen (to build API documentation)
http://www.stack.nl/~dimitri/doxygen/
Debian/Ubuntu: doxygen

libboost-test (for tests)
http://www.boost.org/doc/libs/1_47_0/libs/test/doc/html/index.html
Debian/Ubuntu: libboost-test-dev

OSMPBF (for PBF support)
https://github.com/scrosby/OSM-binary
You need to build this first.


/*

  This is an example tool that computes the sums of highway lengths.
  by Frederik Ramm <frederik@remote.org>

*/

#include <cstdlib>

#include <osmium.hpp>
#include <osmium/storage/byid.hpp>
#include <osmium/handler/coordinates_for_ways.hpp>

typedef Osmium::Storage::SparseTable<Osmium::OSM::Position> storage_sparsetable_t;
typedef Osmium::Storage::Mmap<Osmium::OSM::Position> storage_mmap_t;
typedef Osmium::Handler::CoordinatesForWays<storage_sparsetable_t, storage_mmap_t> cfw_handler_t;

class RoadLengthHandler : public Osmium::Handler::Base {

    storage_sparsetable_t store_pos;
    storage_mmap_t store_neg;
    cfw_handler_t* handler_cfw;
    std::map<std::string, unsigned int> length;
    std::string hwy;

public:

    RoadLengthHandler() 
    {
        handler_cfw = new cfw_handler_t(store_pos, store_neg);
    }

    ~RoadLengthHandler() 
    {
    }

    void init(Osmium::OSM::Meta& meta) 
    {
        handler_cfw->init(meta);
    }

    void node(const shared_ptr<Osmium::OSM::Node const>& node) 
    {
        handler_cfw->node(node);
    }

    void after_nodes() 
    {
        handler_cfw->after_nodes();
    }

    unsigned int distance(double lat1, double lon1, double lat2, double lon2)
    {
        if ((lon1==lon2)&&(lat1==lat2)) return 0;
        double r = 6371000;
        lon1 = lon1 * M_PI/180;
        lon2 = lon2 * M_PI/180;
        lat1 = lat1 * M_PI/180;
        lat2 = lat2 * M_PI/180;
        double dlat = lat2-lat1;
        double dlon = lon2-lon1;
        double x = pow(sin(dlat/2),2) + cos(lat1) * cos(lat2) * pow(sin(dlon/2),2);
        double y = 2 * atan2(sqrt(x), sqrt(1-x));
        return r*y+0.5;
    }

    unsigned int way_length(const shared_ptr<Osmium::OSM::Way>& way)
    {
        double last_lat, last_lon, this_lat, this_lon;
        unsigned int len = 0;
        if (way->node_count() < 2) return 0;
        last_lat = way->get_lat(0);
        last_lon = way->get_lon(0);
        for (unsigned int i=1; i< way->node_count(); i++)
        {
            this_lat = way->get_lat(i);
            this_lon = way->get_lon(i);
            len += distance(last_lat, last_lon, this_lat, this_lon);
            last_lon = this_lon;
            last_lat = this_lat;
        }
        return len;
    }

    void way(const shared_ptr<Osmium::OSM::Way>& way) 
    {
        handler_cfw->way(way);
        const char* highway = way->tags().get_tag_by_key("voltage");
        if (highway)
        {
            hwy.assign(highway);
            length[hwy] += way_length(way);
        }
    }

    void after_ways()
    {
        for (std::map<std::string, unsigned int>::const_iterator i = length.begin(); i != length.end(); i++)
        {
            printf("%-20s%8.1fkm\n", i->first.c_str(), i->second / 1000.0);
        }
    }
};

int main(int argc, char *argv[]) 
{
    Osmium::init(true);

    if (argc != 2) 
    {
        std::cerr << "Usage: " << argv[0] << " OSMFILE" << std::endl;
        exit(1);
    }

    Osmium::OSMFile infile(argv[1]);
    RoadLengthHandler handler;
    infile.read(handler);
}

Wäre schön, wenn das mal jemand versuchen würde, aber ich fürchte Osmium unter Windows ist Neuland:

Wiki: Osmium/Compiling

New OGR driver to read OpenStreetMap .osm / .pbf files