-
Notifications
You must be signed in to change notification settings - Fork 123
point scene layer sample #323
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from 1 commit
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,100 @@ | ||
/* | ||
* Copyright 2019 Esri. | ||
* | ||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not | ||
* use this file except in compliance with the License. You may obtain a copy of | ||
* the License at | ||
* | ||
* http://www.apache.org/licenses/LICENSE-2.0 | ||
* | ||
* Unless required by applicable law or agreed to in writing, software | ||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT | ||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the | ||
* License for the specific language governing permissions and limitations under | ||
* the License. | ||
*/ | ||
|
||
package com.esri.samples.scene.add_a_point_scene_layer; | ||
|
||
import javafx.application.Application; | ||
import javafx.scene.Scene; | ||
import javafx.scene.layout.StackPane; | ||
import javafx.stage.Stage; | ||
|
||
import com.esri.arcgisruntime.geometry.Point; | ||
import com.esri.arcgisruntime.layers.ArcGISSceneLayer; | ||
import com.esri.arcgisruntime.layers.IntegratedMeshLayer; | ||
import com.esri.arcgisruntime.mapping.ArcGISScene; | ||
import com.esri.arcgisruntime.mapping.ArcGISTiledElevationSource; | ||
import com.esri.arcgisruntime.mapping.Basemap; | ||
import com.esri.arcgisruntime.mapping.Surface; | ||
import com.esri.arcgisruntime.mapping.Viewpoint; | ||
import com.esri.arcgisruntime.mapping.view.Camera; | ||
import com.esri.arcgisruntime.mapping.view.SceneView; | ||
|
||
public class AddAPointSceneLayerSample extends Application { | ||
|
||
private SceneView sceneView; | ||
|
||
@Override | ||
public void start(Stage stage) { | ||
|
||
try { | ||
|
||
// set the title and size of the stage and show it | ||
stage.setTitle("Add A Point Scene Layer Sample"); | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. "A" can be lower case |
||
stage.setWidth(800); | ||
stage.setHeight(700); | ||
|
||
// create a JavaFX scene with a stackpane and set it to the stage | ||
StackPane stackPane = new StackPane(); | ||
Scene fxScene = new Scene(stackPane); | ||
stage.setScene(fxScene); | ||
stage.show(); | ||
|
||
// create a scene view and add it to the stack pane | ||
sceneView = new SceneView(); | ||
stackPane.getChildren().add(sceneView); | ||
|
||
// create a scene with a basemap and add it to the scene view | ||
ArcGISScene scene = new ArcGISScene(); | ||
scene.setBasemap(Basemap.createImagery()); | ||
sceneView.setArcGISScene(scene); | ||
|
||
// set the base surface with world elevation | ||
Surface surface = new Surface(); | ||
surface.getElevationSources().add(new ArcGISTiledElevationSource("http://elevation3d.arcgis.com/arcgis/rest/services/WorldElevation3D/Terrain3D/ImageServer")); | ||
scene.setBaseSurface(surface); | ||
|
||
// add a point scene layer with points at world airport locations | ||
ArcGISSceneLayer pointSceneLayer = new ArcGISSceneLayer("https://tiles.arcgis.com/tiles/V6ZHFr6zdgNZuVG0/arcgis/rest/services/Airports_PointSceneLayer/SceneServer/layers/0"); | ||
scene.getOperationalLayers().add(pointSceneLayer); | ||
|
||
} catch (Exception e) { | ||
// on any error, display the stack trace. | ||
e.printStackTrace(); | ||
} | ||
} | ||
|
||
/** | ||
* Stops and releases all resources used in application. | ||
*/ | ||
@Override | ||
public void stop() { | ||
|
||
if (sceneView != null) { | ||
sceneView.dispose(); | ||
} | ||
} | ||
|
||
/** | ||
* Opens and runs application. | ||
* | ||
* @param args arguments passed to this application | ||
*/ | ||
public static void main(String[] args) { | ||
|
||
Application.launch(args); | ||
} | ||
|
||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,41 @@ | ||
<h1>Add a point scene layer</h1> | ||
|
||
<p>View a point scene layer from a scene service.</p> | ||
|
||
<p><img src="AddAPointSceneLayer.png"/></p> | ||
|
||
<h2>Use case</h2> | ||
|
||
<p>Point scene layers can efficiently display large amounts of point features. While point cloud layers can only display simple symbols, point scene layers can display any type of billboard symbol or even 3D models, as long as the location of the symbol can be described by a point. Points are cached and automatically thinned when zoomed out to improve performance.</p> | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. To really emphasise this point...could each point be represented by our 3D plane model instead of a simple white circle? It would mean having to change the base data in Pro/AGOL though. Just a thought. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I think this is a good idea but not sure we have control over the service. We can look at it again after the release. |
||
|
||
<h2>How to use the sample</h2> | ||
|
||
<p>Pan around the scene and zoom in. Notice how many thousands of additional features appear at each successive zoom scale.</p> | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. it also shows features 'behind' the active face of the globe (e.g. looking on Africa airports from Australia are visible behind): is this intentional? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. That definitely sounds like a bug. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I reproduced it with 2328 (super trippy!) and then saw it looks fixed with the latest build 2358. Could you confirm it looks okay to you with that build? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Oh whoops, I must have been checking it with the out of date build. With 2358 it looks good now! |
||
|
||
<h2>How it works</h2> | ||
|
||
<ol> | ||
<li>Create a scene.</li> | ||
|
||
<li>Create an <code>ArcGISSceneLayer</code> with the URL to a point scene layer service.</li> | ||
|
||
<li>Add the layer to the scene's operational layers collection.</li> | ||
</ol> | ||
|
||
<h2>Relevant API</h2> | ||
|
||
<ul> | ||
<li>ArcGISSceneLayer</li> | ||
</ul> | ||
|
||
<h2>About the data</h2> | ||
|
||
<p>This dataset contains more than 40,000 points representing world airports. Points are retrieved on demand by the scene layer as the user navigates the scene.</p> | ||
|
||
<h2>Additional information</h2> | ||
|
||
<p>Point scene layers can also be retrieved from scene layer packages (.slpk) and mobile scene packages (.mspk).</p> | ||
|
||
<h2>Tags</h2> | ||
|
||
<p>3D, point scene layer, layers</p> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
for consistency with other samples, move the two lines of code with StackPane and Scene initiation above the stage methods, so that all 5 stage methods are grouped together.