コード例 #1
0
    def test_add_entities_with_properties(self):
        viewer = cesiumpy.Viewer(divid="viewertest")
        box = cesiumpy.Box(dimensions=(40e4, 30e4, 50e4),
                           position=[-120, 40, 0])
        viewer.entities.add(box, material=cesiumpy.color.RED)
        result = viewer.to_html()
        exp = """<script src="https://cesiumjs.org/Cesium/Build/Cesium/Cesium.js"></script>
<link rel="stylesheet" href="https://cesiumjs.org/Cesium/Build/Cesium/Widgets/widgets.css" type="text/css">
<div id="viewertest" style="width:100%; height:100%;"><div>
<script type="text/javascript">
  var widget = new Cesium.Viewer("viewertest");
  widget.entities.add({position : Cesium.Cartesian3.fromDegrees(-120.0, 40.0, 0.0), box : {dimensions : new Cesium.Cartesian3(400000.0, 300000.0, 500000.0), material : Cesium.Color.RED}});
  widget.zoomTo(widget.entities);
</script>"""
        self.assertEqual(result, exp)

        viewer = cesiumpy.Viewer(divid="viewertest")
        box1 = cesiumpy.Box(dimensions=(40e4, 30e4, 50e4),
                            position=[-120, 40, 0])
        box2 = cesiumpy.Box(dimensions=(50e4, 60e4, 70e4),
                            position=[-100, 80, 0])
        viewer.entities.add([box1, box2], material=cesiumpy.color.RED)
        result = viewer.to_html()
        exp = """<script src="https://cesiumjs.org/Cesium/Build/Cesium/Cesium.js"></script>
<link rel="stylesheet" href="https://cesiumjs.org/Cesium/Build/Cesium/Widgets/widgets.css" type="text/css">
<div id="viewertest" style="width:100%; height:100%;"><div>
<script type="text/javascript">
  var widget = new Cesium.Viewer("viewertest");
  widget.entities.add({position : Cesium.Cartesian3.fromDegrees(-120.0, 40.0, 0.0), box : {dimensions : new Cesium.Cartesian3(400000.0, 300000.0, 500000.0), material : Cesium.Color.RED}});
  widget.entities.add({position : Cesium.Cartesian3.fromDegrees(-100.0, 80.0, 0.0), box : {dimensions : new Cesium.Cartesian3(500000.0, 600000.0, 700000.0), material : Cesium.Color.RED}});
  widget.zoomTo(widget.entities);
</script>"""
        self.assertEqual(result, exp)
コード例 #2
0
    def test_add_scripts(self):
        viewer = cesiumpy.Viewer(divid="viewertest")
        viewer.scripts.add('console.log("xxx");')
        result = viewer.to_html()
        exp = """<script src="https://cesiumjs.org/Cesium/Build/Cesium/Cesium.js"></script>
<link rel="stylesheet" href="https://cesiumjs.org/Cesium/Build/Cesium/Widgets/widgets.css" type="text/css">
<div id="viewertest" style="width:100%; height:100%;"><div>
<script type="text/javascript">
  var widget = new Cesium.Viewer("viewertest");
  console.log("xxx");
</script>"""
        self.assertEqual(result, exp)

        viewer = cesiumpy.Viewer(divid="viewertest")
        viewer.scripts.add(['console.log("xxx");', 'console.log("yyy");'])
        result = viewer.to_html()
        exp = """<script src="https://cesiumjs.org/Cesium/Build/Cesium/Cesium.js"></script>
<link rel="stylesheet" href="https://cesiumjs.org/Cesium/Build/Cesium/Widgets/widgets.css" type="text/css">
<div id="viewertest" style="width:100%; height:100%;"><div>
<script type="text/javascript">
  var widget = new Cesium.Viewer("viewertest");
  console.log("xxx");
  console.log("yyy");
</script>"""
        self.assertEqual(result, exp)

        msg = "item must be"
        with nose.tools.assert_raises_regexp(ValueError, msg):
            viewer.scripts.add(1)
コード例 #3
0
    def test_scatter_array_interface(self):
        _skip_if_no_numpy()
        import numpy as np

        class ExtendedArray(object):
            def __init__(self, values):
                self.values = values

            def __array__(self):
                return np.array(self.values)

        v = cesiumpy.Viewer(divid='viewertest')
        res = v.plot.scatter(ExtendedArray([130, 140, 150]),
                             ExtendedArray([30, 40, 50]))
        self.assertIsInstance(v, cesiumpy.Viewer)

        exp = """<script src="https://cesiumjs.org/Cesium/Build/Cesium/Cesium.js"></script>
<link rel="stylesheet" href="https://cesiumjs.org/Cesium/Build/Cesium/Widgets/widgets.css" type="text/css">
<div id="viewertest" style="width:100%; height:100%;"><div>
<script type="text/javascript">
  var widget = new Cesium.Viewer("viewertest");
  widget.entities.add({position : Cesium.Cartesian3.fromDegrees(130.0, 30.0, 0.0), point : {pixelSize : 10.0, color : Cesium.Color.WHITE}});
  widget.entities.add({position : Cesium.Cartesian3.fromDegrees(140.0, 40.0, 0.0), point : {pixelSize : 10.0, color : Cesium.Color.WHITE}});
  widget.entities.add({position : Cesium.Cartesian3.fromDegrees(150.0, 50.0, 0.0), point : {pixelSize : 10.0, color : Cesium.Color.WHITE}});
  widget.zoomTo(widget.entities);
</script>"""
        self.assertEqual(res.to_html(), exp)
        # entities must be added to original instance
        self.assertEqual(v.to_html(), exp)
コード例 #4
0
    def test_model(self):
        viewer = cesiumpy.Viewer(divid="viewertest")
        m = cesiumpy.Model('xxx.gltf', modelMatrix=(-100, 40, 0), scale=200)
        viewer.scene.primitives.add(m)
        result = viewer.to_html()
        exp = """<script src="https://cesiumjs.org/Cesium/Build/Cesium/Cesium.js"></script>
<link rel="stylesheet" href="https://cesiumjs.org/Cesium/Build/Cesium/Widgets/widgets.css" type="text/css">
<div id="viewertest" style="width:100%; height:100%;"><div>
<script type="text/javascript">
  var widget = new Cesium.Viewer("viewertest");
  widget.scene.primitives.add(Cesium.Model.fromGltf({url : "xxx.gltf", modelMatrix : Cesium.Transforms.eastNorthUpToFixedFrame(Cesium.Cartesian3.fromDegrees(-100.0, 40.0, 0.0)), scale : 200.0}));
</script>"""
        self.assertEqual(result, exp)
コード例 #5
0
ファイル: test_datasource.py プロジェクト: wwwK/cesiumpy
    def test_czml_viewer(self):
        v = cesiumpy.Viewer(divid='viewertest')
        d = cesiumpy.CzmlDataSource('data/simple.czml')
        v.dataSources.add(d)
        result = v.to_html()
        exp = """<script src="https://cesiumjs.org/Cesium/Build/Cesium/Cesium.js"></script>
<link rel="stylesheet" href="https://cesiumjs.org/Cesium/Build/Cesium/Widgets/widgets.css" type="text/css">
<div id="viewertest" style="width:100%; height:100%;"><div>
<script type="text/javascript">
  var widget = new Cesium.Viewer("viewertest");
  widget.dataSources.add(Cesium.CzmlDataSource.load("data/simple.czml"));
</script>"""
        self.assertEqual(result, exp)
コード例 #6
0
 def setUp(self):
     self.options = dict(animation=True,
                         baseLayerPicker=False,
                         fullscreenButton=False,
                         geocoder=False,
                         homeButton=False,
                         infoBox=False,
                         sceneModePicker=True,
                         selectionIndicator=False,
                         navigationHelpButton=False,
                         timeline=False,
                         navigationInstructionsInitiallyVisible=False)
     self.viewer = cesiumpy.Viewer(divid='viewertest', **self.options)
コード例 #7
0
    def test_pin_label_list(self):
        v = cesiumpy.Viewer(divid='viewertest')
        v.plot.pin([130, 140, 150], [30, 40, 50], text=['!', '?', 'XXX'])
        exp = """<script src="https://cesiumjs.org/Cesium/Build/Cesium/Cesium.js"></script>
<link rel="stylesheet" href="https://cesiumjs.org/Cesium/Build/Cesium/Widgets/widgets.css" type="text/css">
<div id="viewertest" style="width:100%; height:100%;"><div>
<script type="text/javascript">
  var widget = new Cesium.Viewer("viewertest");
  widget.entities.add({position : Cesium.Cartesian3.fromDegrees(130.0, 30.0, 0.0), billboard : {image : new Cesium.PinBuilder().fromText("!", Cesium.Color.ROYALBLUE, 48.0)}});
  widget.entities.add({position : Cesium.Cartesian3.fromDegrees(140.0, 40.0, 0.0), billboard : {image : new Cesium.PinBuilder().fromText("?", Cesium.Color.ROYALBLUE, 48.0)}});
  widget.entities.add({position : Cesium.Cartesian3.fromDegrees(150.0, 50.0, 0.0), billboard : {image : new Cesium.PinBuilder().fromText("XXX", Cesium.Color.ROYALBLUE, 48.0)}});
  widget.zoomTo(widget.entities);
</script>"""
        self.assertEqual(v.to_html(), exp)
コード例 #8
0
    def test_scatter_errors(self):
        v = cesiumpy.Viewer(divid='viewertest')

        msg = "y must be list-likes: 0"
        with nose.tools.assert_raises_regexp(ValueError, msg):
            v.plot.scatter([130, 140, 150], 0)

        msg = "y length must be 3: "
        with nose.tools.assert_raises_regexp(ValueError, msg):
            v.plot.scatter([130, 140, 150], [30, 40])

        msg = "size length must be 3: "
        with nose.tools.assert_raises_regexp(ValueError, msg):
            v.plot.scatter([130, 140, 150], [30, 40, 50], size=[1, 2])
コード例 #9
0
    def test_scatter_xy_size_list(self):
        v = cesiumpy.Viewer(divid='viewertest')
        v.plot.scatter([130, 140, 150], [30, 40, 50], size=[20, 30, 40])
        exp = """<script src="https://cesiumjs.org/Cesium/Build/Cesium/Cesium.js"></script>
<link rel="stylesheet" href="https://cesiumjs.org/Cesium/Build/Cesium/Widgets/widgets.css" type="text/css">
<div id="viewertest" style="width:100%; height:100%;"><div>
<script type="text/javascript">
  var widget = new Cesium.Viewer("viewertest");
  widget.entities.add({position : Cesium.Cartesian3.fromDegrees(130.0, 30.0, 0.0), point : {pixelSize : 20.0, color : Cesium.Color.WHITE}});
  widget.entities.add({position : Cesium.Cartesian3.fromDegrees(140.0, 40.0, 0.0), point : {pixelSize : 30.0, color : Cesium.Color.WHITE}});
  widget.entities.add({position : Cesium.Cartesian3.fromDegrees(150.0, 50.0, 0.0), point : {pixelSize : 40.0, color : Cesium.Color.WHITE}});
  widget.zoomTo(widget.entities);
</script>"""
        self.assertEqual(v.to_html(), exp)
コード例 #10
0
ファイル: test_country.py プロジェクト: wwwK/cesiumpy
    def test_viewer(self):
        _skip_if_no_shapely()
        v = cesiumpy.Viewer(divid='viewertest')
        v.entities.add(cesiumpy.countries.abw)
        res = v.to_html()
        exp = """<script src="https://cesiumjs.org/Cesium/Build/Cesium/Cesium.js"></script>
<link rel="stylesheet" href="https://cesiumjs.org/Cesium/Build/Cesium/Widgets/widgets.css" type="text/css">
<div id="viewertest" style="width:100%; height:100%;"><div>
<script type="text/javascript">
  var widget = new Cesium.Viewer("viewertest");
  widget.entities.add({polygon : {hierarchy : Cesium.Cartesian3.fromDegreesArray([-69.882233, 12.41111, -69.946945, 12.436666, -70.056122, 12.534443, -70.059448, 12.538055, -70.060287, 12.544167, -70.063339, 12.621666, -70.063065, 12.628611, -70.058899, 12.631109, -70.053345, 12.629721, -70.035278, 12.61972, -70.031113, 12.616943, -69.932236, 12.528055, -69.896957, 12.480833, -69.891403, 12.472221, -69.885559, 12.457777, -69.873901, 12.421944, -69.873337, 12.415833, -69.876114, 12.411665, -69.882233, 12.41111])}});
  widget.zoomTo(widget.entities);
</script>"""
        self.assertEqual(res, exp)
コード例 #11
0
    def test_bar_size_scalar(self):
        v = cesiumpy.Viewer(divid='viewertest')
        v.plot.bar([130, 140, 150], [30, 40, 50], [10e5, 20e5, 30e5], size=1e5)
        exp = """<script src="https://cesiumjs.org/Cesium/Build/Cesium/Cesium.js"></script>
<link rel="stylesheet" href="https://cesiumjs.org/Cesium/Build/Cesium/Widgets/widgets.css" type="text/css">
<div id="viewertest" style="width:100%; height:100%;"><div>
<script type="text/javascript">
  var widget = new Cesium.Viewer("viewertest");
  widget.entities.add({position : Cesium.Cartesian3.fromDegrees(130.0, 30.0, 500000.0), cylinder : {length : 1000000.0, topRadius : 100000.0, bottomRadius : 100000.0}});
  widget.entities.add({position : Cesium.Cartesian3.fromDegrees(140.0, 40.0, 1000000.0), cylinder : {length : 2000000.0, topRadius : 100000.0, bottomRadius : 100000.0}});
  widget.entities.add({position : Cesium.Cartesian3.fromDegrees(150.0, 50.0, 1500000.0), cylinder : {length : 3000000.0, topRadius : 100000.0, bottomRadius : 100000.0}});
  widget.zoomTo(widget.entities);
</script>"""
        self.assertEqual(v.to_html(), exp)
コード例 #12
0
    def test_label_size_scalar(self):
        v = cesiumpy.Viewer(divid='viewertest')
        v.plot.label(['A', 'B', 'C'], [130, 140, 150], [30, 40, 50], size=2)
        exp = """<script src="https://cesiumjs.org/Cesium/Build/Cesium/Cesium.js"></script>
<link rel="stylesheet" href="https://cesiumjs.org/Cesium/Build/Cesium/Widgets/widgets.css" type="text/css">
<div id="viewertest" style="width:100%; height:100%;"><div>
<script type="text/javascript">
  var widget = new Cesium.Viewer("viewertest");
  widget.entities.add({position : Cesium.Cartesian3.fromDegrees(130.0, 30.0, 0.0), label : {text : "A", scale : 2.0}});
  widget.entities.add({position : Cesium.Cartesian3.fromDegrees(140.0, 40.0, 0.0), label : {text : "B", scale : 2.0}});
  widget.entities.add({position : Cesium.Cartesian3.fromDegrees(150.0, 50.0, 0.0), label : {text : "C", scale : 2.0}});
  widget.zoomTo(widget.entities);
</script>"""
        self.assertEqual(v.to_html(), exp)
コード例 #13
0
    def test_viewer(self):
        url = 'http://server.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer'
        imageryProvider = cesiumpy.ArcGisMapServerImageryProvider(url=url)
        v = cesiumpy.Viewer(divid='viewertest',
                            imageryProvider=imageryProvider)
        result = v.to_html()

        exp = """<script src="https://cesiumjs.org/Cesium/Build/Cesium/Cesium.js"></script>
<link rel="stylesheet" href="https://cesiumjs.org/Cesium/Build/Cesium/Widgets/widgets.css" type="text/css">
<div id="viewertest" style="width:100%; height:100%;"><div>
<script type="text/javascript">
  var widget = new Cesium.Viewer("viewertest", {baseLayerPicker : false, imageryProvider : new Cesium.ArcGisMapServerImageryProvider({url : "http://server.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer"})});
</script>"""
        self.assertEqual(result, exp)
コード例 #14
0
    def test_scatter_pandas(self):
        _skip_if_no_pandas()
        import pandas as pd
        df = pd.DataFrame({
            'lon': [130, 140, 150],
            'lat': [50, 60, 70],
            'r': [10, 20, 30],
            'c': ['r', 'g', 'b']
        })
        # we can't use size column
        v = cesiumpy.Viewer(divid='viewertest')
        v.plot.scatter(x=df.lon, y=df.lat, size=df.r)
        exp = """<script src="https://cesiumjs.org/Cesium/Build/Cesium/Cesium.js"></script>
<link rel="stylesheet" href="https://cesiumjs.org/Cesium/Build/Cesium/Widgets/widgets.css" type="text/css">
<div id="viewertest" style="width:100%; height:100%;"><div>
<script type="text/javascript">
  var widget = new Cesium.Viewer("viewertest");
  widget.entities.add({position : Cesium.Cartesian3.fromDegrees(130.0, 50.0, 0.0), point : {pixelSize : 10.0, color : Cesium.Color.WHITE}});
  widget.entities.add({position : Cesium.Cartesian3.fromDegrees(140.0, 60.0, 0.0), point : {pixelSize : 20.0, color : Cesium.Color.WHITE}});
  widget.entities.add({position : Cesium.Cartesian3.fromDegrees(150.0, 70.0, 0.0), point : {pixelSize : 30.0, color : Cesium.Color.WHITE}});
  widget.zoomTo(widget.entities);
</script>"""
        self.assertEqual(v.to_html(), exp)

        v = cesiumpy.Viewer(divid='viewertest')
        v.plot.scatter(x=df.lon, y=df.lat, size=df.r, color=df.c)
        exp = """<script src="https://cesiumjs.org/Cesium/Build/Cesium/Cesium.js"></script>
<link rel="stylesheet" href="https://cesiumjs.org/Cesium/Build/Cesium/Widgets/widgets.css" type="text/css">
<div id="viewertest" style="width:100%; height:100%;"><div>
<script type="text/javascript">
  var widget = new Cesium.Viewer("viewertest");
  widget.entities.add({position : Cesium.Cartesian3.fromDegrees(130.0, 50.0, 0.0), point : {pixelSize : 10.0, color : Cesium.Color.RED}});
  widget.entities.add({position : Cesium.Cartesian3.fromDegrees(140.0, 60.0, 0.0), point : {pixelSize : 20.0, color : Cesium.Color.GREEN}});
  widget.entities.add({position : Cesium.Cartesian3.fromDegrees(150.0, 70.0, 0.0), point : {pixelSize : 30.0, color : Cesium.Color.BLUE}});
  widget.zoomTo(widget.entities);
</script>"""
        self.assertEqual(v.to_html(), exp)
コード例 #15
0
    def test_viewer(self):
        url = '//assets.agi.com/stk-terrain/world'
        terrainProvider = cesiumpy.CesiumTerrainProvider(url=url,
                                                         requestWaterMask=True)
        v = cesiumpy.Viewer(divid='viewertest',
                            terrainProvider=terrainProvider)
        result = v.to_html()

        exp = """<script src="https://cesiumjs.org/Cesium/Build/Cesium/Cesium.js"></script>
<link rel="stylesheet" href="https://cesiumjs.org/Cesium/Build/Cesium/Widgets/widgets.css" type="text/css">
<div id="viewertest" style="width:100%; height:100%;"><div>
<script type="text/javascript">
  var widget = new Cesium.Viewer("viewertest", {baseLayerPicker : false, terrainProvider : new Cesium.CesiumTerrainProvider({url : "//assets.agi.com/stk-terrain/world", requestWaterMask : true})});
</script>"""
        self.assertEqual(result, exp)
コード例 #16
0
ファイル: test_datasource.py プロジェクト: wwwK/cesiumpy
    def test_geojson_viewer(self):
        ds = cesiumpy.GeoJsonDataSource('./test.geojson', markerSymbol='?')
        viewer = cesiumpy.Viewer(divid='viewertest')
        viewer.dataSources.add(ds)
        viewer.camera.flyTo((-105.01621, 39.57422, 1000))
        result = viewer.to_html()

        exp = """<script src="https://cesiumjs.org/Cesium/Build/Cesium/Cesium.js"></script>
<link rel="stylesheet" href="https://cesiumjs.org/Cesium/Build/Cesium/Widgets/widgets.css" type="text/css">
<div id="viewertest" style="width:100%; height:100%;"><div>
<script type="text/javascript">
  var widget = new Cesium.Viewer("viewertest");
  widget.dataSources.add(Cesium.GeoJsonDataSource.load("./test.geojson", {markerSymbol : "?"}));
  widget.camera.flyTo({destination : Cesium.Cartesian3.fromDegrees(-105.01621, 39.57422, 1000.0)});
</script>"""
        self.assertEqual(result, exp)
コード例 #17
0
ファイル: test_camera.py プロジェクト: wwwK/cesiumpy
    def test_viewer(self):
        viewer = cesiumpy.Viewer(divid='viewertest')
        viewer.camera.flyTo((135, 30, 145, 45))
        result = viewer.to_html()

        exp = """<script src="https://cesiumjs.org/Cesium/Build/Cesium/Cesium.js"></script>
<link rel="stylesheet" href="https://cesiumjs.org/Cesium/Build/Cesium/Widgets/widgets.css" type="text/css">
<div id="viewertest" style="width:100%; height:100%;"><div>
<script type="text/javascript">
  var widget = new Cesium.Viewer("viewertest");
  widget.camera.flyTo({destination : Cesium.Rectangle.fromDegrees(135.0, 30.0, 145.0, 45.0)});
</script>"""
        self.assertEqual(result, exp)

        # add entity (doesn't change camera position)
        cyl = cesiumpy.Cylinder(position=(120, 35, 5000),
                                length=10000,
                                topRadius=10000,
                                bottomRadius=20000,
                                material='red')
        viewer.entities.add(cyl)
        result = viewer.to_html()

        exp = """<script src="https://cesiumjs.org/Cesium/Build/Cesium/Cesium.js"></script>
<link rel="stylesheet" href="https://cesiumjs.org/Cesium/Build/Cesium/Widgets/widgets.css" type="text/css">
<div id="viewertest" style="width:100%; height:100%;"><div>
<script type="text/javascript">
  var widget = new Cesium.Viewer("viewertest");
  widget.entities.add({position : Cesium.Cartesian3.fromDegrees(120.0, 35.0, 5000.0), cylinder : {length : 10000.0, topRadius : 10000.0, bottomRadius : 20000.0, material : Cesium.Color.RED}});
  widget.camera.flyTo({destination : Cesium.Rectangle.fromDegrees(135.0, 30.0, 145.0, 45.0)});
</script>"""
        self.assertEqual(result, exp)

        # we can pass entity with position to camera
        viewer.camera.flyTo(cyl)
        result = viewer.to_html()

        exp = """<script src="https://cesiumjs.org/Cesium/Build/Cesium/Cesium.js"></script>
<link rel="stylesheet" href="https://cesiumjs.org/Cesium/Build/Cesium/Widgets/widgets.css" type="text/css">
<div id="viewertest" style="width:100%; height:100%;"><div>
<script type="text/javascript">
  var widget = new Cesium.Viewer("viewertest");
  widget.entities.add({position : Cesium.Cartesian3.fromDegrees(120.0, 35.0, 5000.0), cylinder : {length : 10000.0, topRadius : 10000.0, bottomRadius : 20000.0, material : Cesium.Color.RED}});
  widget.camera.flyTo({destination : Cesium.Cartesian3.fromDegrees(120.0, 35.0, 5000.0)});
</script>"""
        self.assertEqual(result, exp)
コード例 #18
0
ファイル: test_camera.py プロジェクト: wwwK/cesiumpy
    def test_geocode_defaultheight(self):
        import geopy
        try:
            viewer = cesiumpy.Viewer(divid='viewertest')
            viewer.camera.flyTo(u'Los Angeles')
            result = viewer.to_html()

            exp = """<script src="https://cesiumjs.org/Cesium/Build/Cesium/Cesium.js"></script>
<link rel="stylesheet" href="https://cesiumjs.org/Cesium/Build/Cesium/Widgets/widgets.css" type="text/css">
<div id="viewertest" style="width:100%; height:100%;"><div>
<script type="text/javascript">
  var widget = new Cesium.Viewer("viewertest");
  widget.camera.flyTo({destination : Cesium.Cartesian3.fromDegrees(-118.2436849, 34.0522342, 100000.0)});
</script>"""
            self.assertEqual(result, exp)
        except geopy.exc.GeocoderQuotaExceeded:
            raise nose.SkipTest("exceeded geocoder quota")
コード例 #19
0
ファイル: test_geocode.py プロジェクト: wwwK/cesiumpy
    def test_viewer(self):
        try:
            viewer = cesiumpy.Viewer(divid='viewertest')
            cyl = cesiumpy.Cylinder(position='Los Angeles', length=30000, topRadius=10000,
                                    bottomRadius=10000, material='AQUA')
            viewer.entities.add(cyl)
            viewer.camera.flyTo('Los Angeles')
            result = viewer.to_html()

            exp = """<script src="https://cesiumjs.org/Cesium/Build/Cesium/Cesium.js"></script>
<link rel="stylesheet" href="https://cesiumjs.org/Cesium/Build/Cesium/Widgets/widgets.css" type="text/css">
<div id="viewertest" style="width:100%; height:100%;"><div>
<script type="text/javascript">
  var widget = new Cesium.Viewer("viewertest");
  widget.entities.add({position : Cesium.Cartesian3.fromDegrees(-118.2436849, 34.0522342, 0.0), cylinder : {length : 30000.0, topRadius : 10000.0, bottomRadius : 10000.0, material : Cesium.Color.AQUA}});
  widget.camera.flyTo({destination : Cesium.Cartesian3.fromDegrees(-118.2436849, 34.0522342, 100000.0)});
</script>"""
            self.assertEqual(result, exp)
        except geopy.exc.GeocoderQuotaExceeded:
            raise nose.SkipTest("exceeded geocoder quota")
コード例 #20
0
    def test_contour_xyz(self):
        _skip_if_no_matplotlib()
        import numpy as np
        import matplotlib.mlab as mlab

        delta = 0.025
        x = np.arange(-3.0, 3.0, delta)
        y = np.arange(-2.0, 2.0, delta)
        X, Y = np.meshgrid(x, y)
        Z1 = mlab.bivariate_normal(X, Y, 1.0, 1.0, 0.0, 0.0)
        Z2 = mlab.bivariate_normal(X, Y, 1.5, 0.5, 1, 1)
        # difference of Gaussians
        Z = 10.0 * (Z2 - Z1)

        viewer = cesiumpy.Viewer()
        viewer.plot.contour(X, Y, Z)
        self.assertEqual(len(viewer.entities), 7)
        self.assertTrue(
            all(isinstance(x, cesiumpy.Polyline) for x in viewer.entities))
        self.assertEqual(viewer.entities[0].material,
                         cesiumpy.color.Color(0.0, 0.0, 0.5, 1.0))
コード例 #21
0
    def test_add_cylinder(self):
        viewer = cesiumpy.Viewer(divid='viewertest', **self.options)
        cyl = cesiumpy.Cylinder(position=(-110, 50, 2000000),
                                length=4000000,
                                topRadius=100000,
                                bottomRadius=100000,
                                material=cesiumpy.color.AQUA,
                                name='x')
        viewer.entities.add(cyl)
        result = viewer.to_html()

        # entity name must come first
        exp = """<script src="https://cesiumjs.org/Cesium/Build/Cesium/Cesium.js"></script>
<link rel="stylesheet" href="https://cesiumjs.org/Cesium/Build/Cesium/Widgets/widgets.css" type="text/css">
<div id="viewertest" style="width:100%; height:100%;"><div>
<script type="text/javascript">
  var widget = new Cesium.Viewer("viewertest", {animation : true, baseLayerPicker : false, fullscreenButton : false, geocoder : false, homeButton : false, infoBox : false, sceneModePicker : true, selectionIndicator : false, timeline : false, navigationHelpButton : false, navigationInstructionsInitiallyVisible : false});
  widget.entities.add({name : "x", position : Cesium.Cartesian3.fromDegrees(-110.0, 50.0, 2000000.0), cylinder : {length : 4000000.0, topRadius : 100000.0, bottomRadius : 100000.0, material : Cesium.Color.AQUA}});
  widget.zoomTo(widget.entities);
</script>"""
        self.assertEqual(result, exp)
コード例 #22
0
    def test_bar_pandas(self):
        _skip_if_no_pandas()
        import pandas as pd
        df = pd.DataFrame({
            'lon': [130, 140, 150],
            'lat': [50, 60, 70],
            'h': [1e5, 2e5, 3e5],
            'c': ['r', 'g', 'b']
        })
        v = cesiumpy.Viewer(divid='viewertest')
        v.plot.bar(x=df.lon, y=df.lat, z=df.h, color=df.c)
        exp = """<script src="https://cesiumjs.org/Cesium/Build/Cesium/Cesium.js"></script>
<link rel="stylesheet" href="https://cesiumjs.org/Cesium/Build/Cesium/Widgets/widgets.css" type="text/css">
<div id="viewertest" style="width:100%; height:100%;"><div>
<script type="text/javascript">
  var widget = new Cesium.Viewer("viewertest");
  widget.entities.add({position : Cesium.Cartesian3.fromDegrees(130.0, 50.0, 50000.0), cylinder : {length : 100000.0, topRadius : 10000.0, bottomRadius : 10000.0, material : Cesium.Color.RED}});
  widget.entities.add({position : Cesium.Cartesian3.fromDegrees(140.0, 60.0, 100000.0), cylinder : {length : 200000.0, topRadius : 10000.0, bottomRadius : 10000.0, material : Cesium.Color.GREEN}});
  widget.entities.add({position : Cesium.Cartesian3.fromDegrees(150.0, 70.0, 150000.0), cylinder : {length : 300000.0, topRadius : 10000.0, bottomRadius : 10000.0, material : Cesium.Color.BLUE}});
  widget.zoomTo(widget.entities);
</script>"""
        self.assertEqual(v.to_html(), exp)
コード例 #23
0
    def test_label_pandas(self):
        _skip_if_no_pandas()
        import pandas as pd
        df = pd.DataFrame({
            'lon': [130, 140, 150],
            'lat': [50, 60, 70],
            's': [1, 2, 3],
            'label': ['a', 'b', 'c'],
            'c': ['r', 'g', 'b']
        })
        v = cesiumpy.Viewer(divid='viewertest')
        v.plot.label(df.label, x=df.lon, y=df.lat, size=df.s, color=df.c)
        exp = """<script src="https://cesiumjs.org/Cesium/Build/Cesium/Cesium.js"></script>
<link rel="stylesheet" href="https://cesiumjs.org/Cesium/Build/Cesium/Widgets/widgets.css" type="text/css">
<div id="viewertest" style="width:100%; height:100%;"><div>
<script type="text/javascript">
  var widget = new Cesium.Viewer("viewertest");
  widget.entities.add({position : Cesium.Cartesian3.fromDegrees(130.0, 50.0, 0.0), label : {text : "a", fillColor : Cesium.Color.RED, scale : 1.0}});
  widget.entities.add({position : Cesium.Cartesian3.fromDegrees(140.0, 60.0, 0.0), label : {text : "b", fillColor : Cesium.Color.GREEN, scale : 2.0}});
  widget.entities.add({position : Cesium.Cartesian3.fromDegrees(150.0, 70.0, 0.0), label : {text : "c", fillColor : Cesium.Color.BLUE, scale : 3.0}});
  widget.zoomTo(widget.entities);
</script>"""
        self.assertEqual(v.to_html(), exp)
コード例 #24
0
    def test_pin_pandas(self):
        _skip_if_no_pandas()
        import pandas as pd
        df = pd.DataFrame({
            'lon': [130, 140, 150],
            'lat': [50, 60, 70],
            's': [10, 20, 30],
            'label': ['a', 'b', 'c'],
            'c': ['r', 'g', 'b']
        })
        v = cesiumpy.Viewer(divid='viewertest')
        v.plot.pin(x=df.lon, y=df.lat, size=df.s, color=df.c, text=df.label)
        exp = """<script src="https://cesiumjs.org/Cesium/Build/Cesium/Cesium.js"></script>
<link rel="stylesheet" href="https://cesiumjs.org/Cesium/Build/Cesium/Widgets/widgets.css" type="text/css">
<div id="viewertest" style="width:100%; height:100%;"><div>
<script type="text/javascript">
  var widget = new Cesium.Viewer("viewertest");
  widget.entities.add({position : Cesium.Cartesian3.fromDegrees(130.0, 50.0, 0.0), billboard : {image : new Cesium.PinBuilder().fromText("a", Cesium.Color.RED, 10.0)}});
  widget.entities.add({position : Cesium.Cartesian3.fromDegrees(140.0, 60.0, 0.0), billboard : {image : new Cesium.PinBuilder().fromText("b", Cesium.Color.GREEN, 20.0)}});
  widget.entities.add({position : Cesium.Cartesian3.fromDegrees(150.0, 70.0, 0.0), billboard : {image : new Cesium.PinBuilder().fromText("c", Cesium.Color.BLUE, 30.0)}});
  widget.zoomTo(widget.entities);
</script>"""
        self.assertEqual(v.to_html(), exp)
コード例 #25
0
    def test_add_polygon(self):
        viewer = cesiumpy.Viewer(divid="viewertest", **self.options)
        pol = cesiumpy.Polygon([
            -109.080842, 45.002073, -105.91517, 45.002073, -104.058488,
            44.996596, -104.053011, 43.002989, -104.053011, 41.003906,
            -105.728954, 40.998429, -107.919731, 41.003906, -109.04798,
            40.998429, -111.047063, 40.998429, -111.047063, 42.000709,
            -111.047063, 44.476286, -111.05254, 45.002073
        ],
                               material=cesiumpy.color.RED,
                               name='x')
        viewer.entities.add(pol)
        result = viewer.to_html()

        exp = """<script src="https://cesiumjs.org/Cesium/Build/Cesium/Cesium.js"></script>
<link rel="stylesheet" href="https://cesiumjs.org/Cesium/Build/Cesium/Widgets/widgets.css" type="text/css">
<div id="viewertest" style="width:100%; height:100%;"><div>
<script type="text/javascript">
  var widget = new Cesium.Viewer("viewertest", {animation : true, baseLayerPicker : false, fullscreenButton : false, geocoder : false, homeButton : false, infoBox : false, sceneModePicker : true, selectionIndicator : false, timeline : false, navigationHelpButton : false, navigationInstructionsInitiallyVisible : false});
  widget.entities.add({name : "x", polygon : {hierarchy : Cesium.Cartesian3.fromDegreesArray([-109.080842, 45.002073, -105.91517, 45.002073, -104.058488, 44.996596, -104.053011, 43.002989, -104.053011, 41.003906, -105.728954, 40.998429, -107.919731, 41.003906, -109.04798, 40.998429, -111.047063, 40.998429, -111.047063, 42.000709, -111.047063, 44.476286, -111.05254, 45.002073]), material : Cesium.Color.RED}});
  widget.zoomTo(widget.entities);
</script>"""
        self.assertEqual(result, exp)
コード例 #26
0
import cesiumpy

v = cesiumpy.CesiumWidget()

v = cesiumpy.Viewer()
b = cesiumpy.Box(dimensions=(40e4, 30e4, 50e4), material=cesiumpy.color.RED, position=[-120, 40, 0])
v.entities.add(b)#print
コード例 #27
0
    def test_add_entities(self):
        viewer = cesiumpy.Viewer(divid="viewertest", **self.options)

        box = cesiumpy.Box(dimensions=(40e4, 30e4, 50e4),
                           material=cesiumpy.color.RED,
                           position=[-120, 40, 0])
        viewer.entities.add(box)

        ellipse = cesiumpy.Ellipse(semiMinorAxis=25e4,
                                   semiMajorAxis=40e4,
                                   material=cesiumpy.color.BLUE,
                                   position=[-110, 40, 0])
        viewer.entities.add(ellipse)

        cyl = cesiumpy.Cylinder(position=[-100, 40, 50e4],
                                length=100e4,
                                topRadius=10e4,
                                bottomRadius=10e4,
                                material=cesiumpy.color.AQUA)
        viewer.entities.add(cyl)

        pol = cesiumpy.Polygon([-90, 40, -95, 40, -95, 45, -90, 40],
                               material=cesiumpy.color.ORANGE)
        viewer.entities.add(pol)

        rect = cesiumpy.Rectangle(coordinates=(-85, 40, -80, 45),
                                  material=cesiumpy.color.GREEN)
        viewer.entities.add(rect)

        ellipsoid = cesiumpy.Ellipsoid(position=(-70, 40, 0),
                                       radii=(20e4, 20e4, 30e4),
                                       material=cesiumpy.color.GREEN)
        viewer.entities.add(ellipsoid)

        wall = cesiumpy.Wall(positions=[-60, 40, -65, 40, -65, 45, -60, 45],
                             maximumHeights=[10e4] * 4,
                             minimumHeights=[0] * 4,
                             material=cesiumpy.color.RED)
        viewer.entities.add(wall)

        corridor = cesiumpy.Corridor(positions=[-120, 30, -90, 35, -60, 30],
                                     width=2e5,
                                     material=cesiumpy.color.RED)
        viewer.entities.add(corridor)

        polyline = cesiumpy.Polyline(positions=[-120, 25, -90, 30, -60, 25],
                                     width=0.5,
                                     material=cesiumpy.color.BLUE)
        viewer.entities.add(polyline)
        polylinevolume = cesiumpy.PolylineVolume(
            positions=[-120, 20, -90, 25, -60, 20],
            shape=[
                cesiumpy.Cartesian2(-50000, -50000),
                cesiumpy.Cartesian2(50000, -50000),
                cesiumpy.Cartesian2(50000, 50000),
                cesiumpy.Cartesian2(-50000, 50000)
            ],
            material=cesiumpy.color.GREEN)
        viewer.entities.add(polylinevolume)
        result = viewer.to_html()

        exp = """<script src="https://cesiumjs.org/Cesium/Build/Cesium/Cesium.js"></script>
<link rel="stylesheet" href="https://cesiumjs.org/Cesium/Build/Cesium/Widgets/widgets.css" type="text/css">
<div id="viewertest" style="width:100%; height:100%;"><div>
<script type="text/javascript">
  var widget = new Cesium.Viewer("viewertest", {animation : true, baseLayerPicker : false, fullscreenButton : false, geocoder : false, homeButton : false, infoBox : false, sceneModePicker : true, selectionIndicator : false, timeline : false, navigationHelpButton : false, navigationInstructionsInitiallyVisible : false});
  widget.entities.add({position : Cesium.Cartesian3.fromDegrees(-120.0, 40.0, 0.0), box : {dimensions : new Cesium.Cartesian3(400000.0, 300000.0, 500000.0), material : Cesium.Color.RED}});
  widget.entities.add({position : Cesium.Cartesian3.fromDegrees(-110.0, 40.0, 0.0), ellipse : {semiMinorAxis : 250000.0, semiMajorAxis : 400000.0, material : Cesium.Color.BLUE}});
  widget.entities.add({position : Cesium.Cartesian3.fromDegrees(-100.0, 40.0, 500000.0), cylinder : {length : 1000000.0, topRadius : 100000.0, bottomRadius : 100000.0, material : Cesium.Color.AQUA}});
  widget.entities.add({polygon : {hierarchy : Cesium.Cartesian3.fromDegreesArray([-90, 40, -95, 40, -95, 45, -90, 40]), material : Cesium.Color.ORANGE}});
  widget.entities.add({rectangle : {coordinates : Cesium.Rectangle.fromDegrees(-85.0, 40.0, -80.0, 45.0), material : Cesium.Color.GREEN}});
  widget.entities.add({position : Cesium.Cartesian3.fromDegrees(-70.0, 40.0, 0.0), ellipsoid : {radii : new Cesium.Cartesian3(200000.0, 200000.0, 300000.0), material : Cesium.Color.GREEN}});
  widget.entities.add({wall : {positions : Cesium.Cartesian3.fromDegreesArray([-60, 40, -65, 40, -65, 45, -60, 45]), maximumHeights : [100000.0, 100000.0, 100000.0, 100000.0], minimumHeights : [0, 0, 0, 0], material : Cesium.Color.RED}});
  widget.entities.add({corridor : {positions : Cesium.Cartesian3.fromDegreesArray([-120, 30, -90, 35, -60, 30]), width : 200000.0, material : Cesium.Color.RED}});
  widget.entities.add({polyline : {positions : Cesium.Cartesian3.fromDegreesArray([-120, 25, -90, 30, -60, 25]), width : 0.5, material : Cesium.Color.BLUE}});
  widget.entities.add({polylineVolume : {positions : Cesium.Cartesian3.fromDegreesArray([-120, 20, -90, 25, -60, 20]), shape : [new Cesium.Cartesian2(-50000.0, -50000.0), new Cesium.Cartesian2(50000.0, -50000.0), new Cesium.Cartesian2(50000.0, 50000.0), new Cesium.Cartesian2(-50000.0, 50000.0)], material : Cesium.Color.GREEN}});
  widget.zoomTo(widget.entities);
</script>"""
        self.assertEqual(result, exp)

        # clear entities
        viewer.entities.clear()
        result = viewer.to_html()
        exp_clear = """<script src="https://cesiumjs.org/Cesium/Build/Cesium/Cesium.js"></script>
<link rel="stylesheet" href="https://cesiumjs.org/Cesium/Build/Cesium/Widgets/widgets.css" type="text/css">
<div id="viewertest" style="width:100%; height:100%;"><div>
<script type="text/javascript">
  var widget = new Cesium.Viewer("viewertest", {animation : true, baseLayerPicker : false, fullscreenButton : false, geocoder : false, homeButton : false, infoBox : false, sceneModePicker : true, selectionIndicator : false, timeline : false, navigationHelpButton : false, navigationInstructionsInitiallyVisible : false});
</script>"""
        self.assertEqual(result, exp_clear)

        # add multiple objects at once
        viewer = cesiumpy.Viewer(divid="viewertest", **self.options)
        objs = [
            box, ellipse, cyl, pol, rect, ellipsoid, wall, corridor, polyline,
            polylinevolume
        ]
        viewer.entities.add(objs)
        result = viewer.to_html()
        self.assertEqual(result, exp)

        viewer.entities.clear()
        result = viewer.to_html()
        self.assertEqual(result, exp_clear)