This library ScalaCZML reads and writes CZML JSON entities and presents them as Scala objects.
Cesium is a JavaScript library for creating 3D globes and 2D maps in a web browser without a plugin. It uses WebGL for hardware-accelerated graphics, and is cross-platform, cross-browser, and tuned for dynamic-data visualization.
CZML is a JSON schema for describing a time-dynamic graphical scene, primarily for display in a web browser running Cesium. It describes lines, points, billboards (markers), models and other graphical primitives, and specifies how they change with time.
ScalaCZML makes the CZML JSON entities available as Scala objects. The library follows the specifications of reference 1. Typically ScalaCZML is for server side application development.
There is also the Cesium library in Scala, CesiumScala for client side development.
Using Scala and the Play-JSON library of the Play Framework
To use the last release add the following dependency to your build.sbt:
libraryDependencies += "com.github.workingDog" %% "scalaczml" % "0.5"
To compile and generate a jar file from the source:
sbt package
The jar file (scalaczml_2.11-0.6-SNAPSHOT.jar) will be in the "./target/scala-2.11/" directory.
To generate the ScalaCZML API documentation, type "sbt doc". The documentation will be generated in /target/scala-2.11/api directory. ScalaCZML mostly follows reference 2 documentation.
object Example1 {
def main(args: Array[String]) {
// read a CZML document from a file
val jsonDoc = Source.fromFile("/.....test4.czml").mkString
// create a czml object from the json document
val czml = CZML[CZMLPacket](jsonDoc)
// create a position property
val pos = CzmlPositions(9.3, 8.2, 7.1)
// create a billboard property with image uri and scale fields
val bb = new Billboard(image = "http://localhost/img.png", scale = 0.7)
// create a czml packet
val packet = new CZMLPacket("test packet", HashSet[CzmlProperty](pos, bb))
// add the packet to the existing czml object
czml.add(packet) // or czml.packets += packet
// convert the czml object to json
val jsczml = Json.toJson(czml)
// write the czml as a json document to file (here to System.out)
Util.writeCzmlToFile(czml)
// alternatively
// Util.writeJsToFile(Json.prettyPrint(jsczml))
}
}
usable