Skip to content

A free open source C++ terrain rendering toolkit.

License

Notifications You must be signed in to change notification settings

emminizer/osgearth

 
 

Repository files navigation

Windows Linux OSX

Welcome to osgEarth!

osgEarth adds geospatially accurate 3D maps to your C++ application.

osgEarth builds on trusted open source technologies like OpenSceneGraph and GDAL to give you high-performance, accurate terrain and map rendering. It supports a myriad of geospatial data formats and map projections.

Install the SDK

Windows users can install the latest version of osgEarth through vcpkg:

git clone https://github.com/microsoft/vcpkg.git
cd vcpkg && bootstrap-vcpkg.bat
vcpkg install osgearth:x64-windows

This will take a while the first time as vcpkg builds osgEarth and its dependencies.

Check out some examples

osgearth_imgui is the main command-line viewer. osgearth_viewer is a stripped-down viewer without any GUI. Both of these read "earth files", XML files that describe the contents of a map.

You can find example earth files in the tests folder of the repo.

:: Online imagery and elevation:
osgearth_imgui tests\readymap.earth

:: OpenStreetMap:
osgearth_imgui tests\osm.earth

:: Local GeoTIFFs:
osgearth_imgui tests\simple.earth 

Integrate it into your project

CMakeLists.txt

cmake_minimum_required(VERSION 3.20)
project(myApp)
find_package(osgEarth CONFIG REQUIRED)
add_executable(myApp main.cpp)
target_link_libraries(myApp PRIVATE osgEarth::osgEarth)
install(TARGETS myApp RUNTIME DESTINATION bin)

main.cpp

#include <osgEarth/MapNode>
#include <osgEarth/TMS>
#include <osgEarth/EarthManipulator>
#include <osg/ArgumentParser>
#include <osgViewer/Viewer>

int main(int argc, char** argv)
{
    osgEarth::initialize();
    
    osg::ArgumentParser args(&argc, argv);
    osgViewer::Viewer viewer(args);
    
    auto imagery = new osgEarth::TMSImageLayer();
    imagery->setURL("https://readymap.org/readymap/tiles/1.0.0/7/");
    
    auto mapNode = new osgEarth::MapNode();
    mapNode->getMap()->addLayer(imagery);
    
    viewer.setSceneData(mapNode);
    viewer.setCameraManipulator(new osgEarth::EarthManipulator(args));
    
    return viewer.run();
}

Resources


© Copyright Pelican Mapping

About

A free open source C++ terrain rendering toolkit.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Languages

  • C++ 56.6%
  • C 42.2%
  • GLSL 0.7%
  • CMake 0.3%
  • Go 0.1%
  • Java 0.1%