-
Notifications
You must be signed in to change notification settings - Fork 123
Display subtype feature layer #427
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
Merged
Merged
Changes from all commits
Commits
Show all changes
10 commits
Select commit
Hold shift + click to select a range
f4bc131
set up sample
Rachael-E 04d7280
Update DisplaySubtypeFeatureLayerSample.java
Rachael-E dd7c7c8
update readme
Rachael-E 13487dd
refactor for fxml
Rachael-E 457c9e0
self review
Rachael-E 75484d0
address review comments and update UI
Rachael-E e3a524f
fix typo
Rachael-E 7898508
update method name
Rachael-E 069a0a1
enable UI once sublayer has loaded
Rachael-E d381304
minor rewording
tschie File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
Binary file added
BIN
+92 KB
feature_layers/display-subtype-feature-layer/DisplaySubtypeFeatureLayer.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
# Display a subtype feature layer | ||
|
||
Display a composite layer of all the subtype values in a feature class. | ||
|
||
 | ||
|
||
## Use case | ||
|
||
This is useful for controlling labeling, visibility, and symbology of a given subtype as though they are distinct | ||
layers on the map. | ||
|
||
## How to use the sample | ||
|
||
The sample loads with the sublayer visible on the map. Toggle its visibility by clicking the "Show sublayer | ||
" checkbox. Toggle between the sublayer's original renderer and an alternate renderer using the radio buttons. Click the | ||
"Set sublayer minimum scale" button to set the sublayer's minimum scale to the current map scale. | ||
|
||
## How it works | ||
1. Create a `SubtypeFeatureLayer` from a `ServiceFeatureTable` that defines a subtype, and add it to the `ArcGISMap`. | ||
2. Get a `SubtypeSublayer` from the subtype feature layer using its name. | ||
3. Enable the sublayer's labels and define them with `getLabelDefinitions()`. | ||
4. Set the sublayer's visibility with `setVisible()`. | ||
5. Change the sublayer's renderer/symbology with `setRenderer()`. | ||
6. Update the sublayer's minimum scale value with `setMinScale()`. | ||
|
||
## Relevant API | ||
|
||
* LabelDefinition | ||
* ServiceFeatureTable | ||
* SubtypeFeatureLayer | ||
* SubtypeSublayer | ||
|
||
## About the data | ||
|
||
The [feature service layer](https://sampleserver7.arcgisonline.com/arcgis/rest/services/UtilityNetwork/NapervilleElectric/FeatureServer/100) in this sample represents an electric network in Naperville, Illinois, which contains a utility network with asset classification for different devices. | ||
|
||
## Tags | ||
|
||
asset group, feature layer, labeling, sublayer, subtype, symbology, utility network, visible scale range |
30 changes: 30 additions & 0 deletions
30
feature_layers/display-subtype-feature-layer/README.metadata.json
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
{ | ||
"category": "Feature Layers", | ||
"description": "Display a composite layer of all the subtype values in a feature class.", | ||
"ignore": false, | ||
"images": [ | ||
"DisplaySubtypeFeatureLayer.png" | ||
], | ||
"keywords": [ | ||
"asset group", | ||
"feature layer", | ||
"labeling", | ||
"sublayer", | ||
"subtype", | ||
"symbology", | ||
"utility network", | ||
"visible scale range" | ||
], | ||
"relevant_apis": [ | ||
"LabelDefinition", | ||
"ServiceFeatureTable", | ||
"SubtypeFeatureLayer", | ||
"SubtypeSublayer" | ||
], | ||
"snippets": [ | ||
"src/main/java/com/esri/samples/display-subtype-feature-layer/DisplaySubtypeFeatureLayerSample.java", | ||
"src/main/java/com/esri/samples/display-subtype-feature-layer/DisplaySubtypeFeatureLayerController.java", | ||
"src/main/resources/display_subtype_feature_layer.fxml" | ||
], | ||
"title": "Display subtype feature layer" | ||
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,75 @@ | ||
plugins { | ||
id 'application' | ||
id 'org.openjfx.javafxplugin' version '0.0.5' | ||
} | ||
|
||
group = 'com.esri.samples' | ||
|
||
ext { | ||
arcgisVersion = '100.7.0' | ||
} | ||
|
||
javafx { | ||
version = "11.0.1" | ||
modules = [ 'javafx.controls', 'javafx.fxml' ] | ||
} | ||
|
||
compileJava.options.encoding = 'UTF-8' | ||
|
||
repositories { | ||
jcenter() | ||
maven { | ||
url 'https://esri.bintray.com/arcgis' | ||
} | ||
maven { | ||
url 'http://olympus.esri.com/artifactory/arcgisruntime-repo' | ||
} | ||
} | ||
|
||
configurations { | ||
natives | ||
} | ||
|
||
dependencies { | ||
compile 'commons-io:commons-io:2.4' | ||
compile "com.esri.arcgisruntime:arcgis-java:$arcgisVersion" | ||
natives "com.esri.arcgisruntime:arcgis-java-jnilibs:$arcgisVersion" | ||
natives "com.esri.arcgisruntime:arcgis-java-resources:$arcgisVersion" | ||
} | ||
|
||
task copyNatives(type: Copy) { | ||
description = "Copies the arcgis native libraries into the project build directory for development." | ||
group = "build" | ||
configurations.natives.asFileTree.each { | ||
from(zipTree(it)) | ||
} | ||
// store native libraries in a common location shared with other samples | ||
into "${System.properties.getProperty("user.home")}/.arcgis/$arcgisVersion" | ||
} | ||
|
||
run { | ||
dependsOn copyNatives | ||
mainClassName = 'com.esri.samples.feature_layers.DisplaySubtypeFeatureLayerLauncher' | ||
} | ||
|
||
jar { | ||
duplicatesStrategy = DuplicatesStrategy.EXCLUDE | ||
manifest { | ||
attributes("Main-Class": "$mainClassName") | ||
} | ||
from { | ||
configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } | ||
} | ||
} | ||
|
||
task productionZip(type: Zip) { | ||
group = 'distribution' | ||
from copyNatives | ||
from jar.destinationDir | ||
into (project.name) | ||
baseName = project.name | ||
} | ||
|
||
wrapper { | ||
gradleVersion = '5.0' | ||
} |
Binary file added
BIN
+54.4 KB
feature_layers/display-subtype-feature-layer/gradle/wrapper/gradle-wrapper.jar
Binary file not shown.
5 changes: 5 additions & 0 deletions
5
feature_layers/display-subtype-feature-layer/gradle/wrapper/gradle-wrapper.properties
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
distributionBase=GRADLE_USER_HOME | ||
distributionPath=wrapper/dists | ||
distributionUrl=https\://services.gradle.org/distributions/gradle-5.0-bin.zip | ||
zipStoreBase=GRADLE_USER_HOME | ||
zipStorePath=wrapper/dists |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,172 @@ | ||
#!/usr/bin/env sh | ||
|
||
############################################################################## | ||
## | ||
## Gradle start up script for UN*X | ||
## | ||
############################################################################## | ||
|
||
# Attempt to set APP_HOME | ||
# Resolve links: $0 may be a link | ||
PRG="$0" | ||
# Need this for relative symlinks. | ||
while [ -h "$PRG" ] ; do | ||
ls=`ls -ld "$PRG"` | ||
link=`expr "$ls" : '.*-> \(.*\)$'` | ||
if expr "$link" : '/.*' > /dev/null; then | ||
PRG="$link" | ||
else | ||
PRG=`dirname "$PRG"`"/$link" | ||
fi | ||
done | ||
SAVED="`pwd`" | ||
cd "`dirname \"$PRG\"`/" >/dev/null | ||
APP_HOME="`pwd -P`" | ||
cd "$SAVED" >/dev/null | ||
|
||
APP_NAME="Gradle" | ||
APP_BASE_NAME=`basename "$0"` | ||
|
||
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. | ||
DEFAULT_JVM_OPTS='"-Xmx64m"' | ||
|
||
# Use the maximum available, or set MAX_FD != -1 to use that value. | ||
MAX_FD="maximum" | ||
|
||
warn () { | ||
echo "$*" | ||
} | ||
|
||
die () { | ||
echo | ||
echo "$*" | ||
echo | ||
exit 1 | ||
} | ||
|
||
# OS specific support (must be 'true' or 'false'). | ||
cygwin=false | ||
msys=false | ||
darwin=false | ||
nonstop=false | ||
case "`uname`" in | ||
CYGWIN* ) | ||
cygwin=true | ||
;; | ||
Darwin* ) | ||
darwin=true | ||
;; | ||
MINGW* ) | ||
msys=true | ||
;; | ||
NONSTOP* ) | ||
nonstop=true | ||
;; | ||
esac | ||
|
||
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar | ||
|
||
# Determine the Java command to use to start the JVM. | ||
if [ -n "$JAVA_HOME" ] ; then | ||
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then | ||
# IBM's JDK on AIX uses strange locations for the executables | ||
JAVACMD="$JAVA_HOME/jre/sh/java" | ||
else | ||
JAVACMD="$JAVA_HOME/bin/java" | ||
fi | ||
if [ ! -x "$JAVACMD" ] ; then | ||
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME | ||
|
||
Please set the JAVA_HOME variable in your environment to match the | ||
location of your Java installation." | ||
fi | ||
else | ||
JAVACMD="java" | ||
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. | ||
|
||
Please set the JAVA_HOME variable in your environment to match the | ||
location of your Java installation." | ||
fi | ||
|
||
# Increase the maximum file descriptors if we can. | ||
if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then | ||
MAX_FD_LIMIT=`ulimit -H -n` | ||
if [ $? -eq 0 ] ; then | ||
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then | ||
MAX_FD="$MAX_FD_LIMIT" | ||
fi | ||
ulimit -n $MAX_FD | ||
if [ $? -ne 0 ] ; then | ||
warn "Could not set maximum file descriptor limit: $MAX_FD" | ||
fi | ||
else | ||
warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" | ||
fi | ||
fi | ||
|
||
# For Darwin, add options to specify how the application appears in the dock | ||
if $darwin; then | ||
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" | ||
fi | ||
|
||
# For Cygwin, switch paths to Windows format before running java | ||
if $cygwin ; then | ||
APP_HOME=`cygpath --path --mixed "$APP_HOME"` | ||
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` | ||
JAVACMD=`cygpath --unix "$JAVACMD"` | ||
|
||
# We build the pattern for arguments to be converted via cygpath | ||
ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` | ||
SEP="" | ||
for dir in $ROOTDIRSRAW ; do | ||
ROOTDIRS="$ROOTDIRS$SEP$dir" | ||
SEP="|" | ||
done | ||
OURCYGPATTERN="(^($ROOTDIRS))" | ||
# Add a user-defined pattern to the cygpath arguments | ||
if [ "$GRADLE_CYGPATTERN" != "" ] ; then | ||
OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" | ||
fi | ||
# Now convert the arguments - kludge to limit ourselves to /bin/sh | ||
i=0 | ||
for arg in "$@" ; do | ||
CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` | ||
CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option | ||
|
||
if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition | ||
eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` | ||
else | ||
eval `echo args$i`="\"$arg\"" | ||
fi | ||
i=$((i+1)) | ||
done | ||
case $i in | ||
(0) set -- ;; | ||
(1) set -- "$args0" ;; | ||
(2) set -- "$args0" "$args1" ;; | ||
(3) set -- "$args0" "$args1" "$args2" ;; | ||
(4) set -- "$args0" "$args1" "$args2" "$args3" ;; | ||
(5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; | ||
(6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; | ||
(7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; | ||
(8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; | ||
(9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; | ||
esac | ||
fi | ||
|
||
# Escape application args | ||
save () { | ||
for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done | ||
echo " " | ||
} | ||
APP_ARGS=$(save "$@") | ||
|
||
# Collect all arguments for the java command, following the shell quoting and substitution rules | ||
eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" | ||
|
||
# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong | ||
if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then | ||
cd "$(dirname "$0")" | ||
fi | ||
|
||
exec "$JAVACMD" "$@" |
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
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.
Should we be using
.
before method calls? i.e..getLabelDefinitions()
? Would apply to a few of them below as well.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.
good question. I looked at some of our other readmes, and they don't use the
.
before the method. As I recall, we don't use it since it should be obvious to the reader which object is calling that method (e.g. in step 3 above it should be obvious that it's the SubtypeSublayer that the getLabelDefinitions() would be called on). If we're using the full object with method reference then that should be referred to asSubtypeSublayer.getLabelDefinitions()
.