-
Notifications
You must be signed in to change notification settings - Fork 123
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
10 changed files
with
599 additions
and
0 deletions.
There are no files selected for viewing
This file contains 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,38 @@ | ||
# Display dimensions | ||
|
||
Display dimension features from a mobile map package. | ||
|
||
![Image showing the Display Dimensions sample](DisplayDimensions.png) | ||
|
||
## Use case | ||
|
||
Dimensions show specific lengths or distances on a map. A dimension may indicate the length of a side of a building or land parcel, or the distance between two features, such as a fire hydrant and the corner of a building. | ||
|
||
## How to use the sample | ||
|
||
When the sample loads, it will automatically display the map containing dimension features from the mobile map package. The name of the dimension layer containing the dimension features is displayed in the controls box. Control the visibility of the dimension layer with the "Dimension Layer visibility" check box, and apply a definition expression to show dimensions of greater than or equal to 450m in length using the "Definition Expression" checkbox. | ||
|
||
## How it works | ||
|
||
1. Create a `MobileMapPackage` specifying the path to the .mmpk file. | ||
2. Load the mobile map package with `mmpk.loadAsync()`. | ||
3. After it successfully loads, get the map from the mmpk and add it to the map view: `mapView.setMap(mmpk.getMaps().get(0))`. | ||
4. Loop through the map's layers to create a `DimensionLayer` and set the name of the layer to the UI with `dimensionLayer.getName()`. | ||
5. Control the dimension layer's visibility with `dimensionLayer.setVisible(boolean)` and set a definition expression with `dimensionLayer.setDefinitionExpression(String)`. | ||
|
||
## Relevant API | ||
|
||
* DimensionLayer | ||
* MobileMapPackage | ||
|
||
## About the data | ||
|
||
This sample shows a subset of the Edinburgh, Scotland network of pylons, substations, and powerlines within an [Edinburgh Pylon Dimensions mobile map package](https://arcgis.com/home/item.html?id=f5ff6f5556a945bca87ca513b8729a1e), digitized from satellite imagery. Note the data is intended as illustrative of the network only. | ||
|
||
## Additional information | ||
|
||
Dimension layers can be taken offline from a feature service hosted on ArcGIS Enterprise 10.9 or later, using the [GeodatabaseSyncTask](https://developers.arcgis.com/java/api-reference/reference/com/esri/arcgisruntime/tasks/geodatabase/GeodatabaseSyncTask.html). Dimension layers are also supported in mobile map packages or mobile geodatabases created in ArcGIS Pro 2.9 or later. | ||
|
||
## Tags | ||
|
||
dimension, layer, mmpk, mobile map package, utility |
26 changes: 26 additions & 0 deletions
26
display_information/display-dimensions/README.metadata.json
This file contains 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,26 @@ | ||
{ | ||
"category": "Display information", | ||
"description": "Display dimension features from a mobile map package.", | ||
"ignore": false, | ||
"images": [ | ||
"DisplayDimensions.png" | ||
], | ||
"keywords": [ | ||
"dimension", | ||
"layer", | ||
"mmpk", | ||
"mobile map package", | ||
"utility", | ||
"DimensionLayer", | ||
"MobileMapPackage" | ||
], | ||
"redirect_from": "", | ||
"relevant_apis": [ | ||
"DimensionLayer", | ||
"MobileMapPackage" | ||
], | ||
"snippets": [ | ||
"src/main/java/com/esri/samples/display_dimensions/DisplayDimensionsSample.java" | ||
], | ||
"title": "Display dimensions" | ||
} |
This file contains 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,100 @@ | ||
plugins { | ||
id 'application' | ||
id 'org.openjfx.javafxplugin' version '0.0.8' | ||
} | ||
|
||
group = 'com.esri.samples' | ||
|
||
ext { | ||
arcgisVersion = '100.13.0' | ||
} | ||
|
||
javafx { | ||
version = "11.0.2" | ||
modules = [ 'javafx.controls' ] | ||
} | ||
|
||
compileJava.options.encoding = 'UTF-8' | ||
|
||
repositories { | ||
mavenCentral() | ||
maven { | ||
url 'https://esri.jfrog.io/artifactory/arcgis' | ||
} | ||
maven { | ||
url 'https://olympus.esri.com/artifactory/arcgisruntime-repo' | ||
} | ||
} | ||
|
||
configurations { | ||
natives | ||
} | ||
|
||
dependencies { | ||
implementation "com.esri.arcgisruntime:arcgis-java:$arcgisVersion" | ||
natives "com.esri.arcgisruntime:arcgis-java-jnilibs:$arcgisVersion" | ||
natives "com.esri.arcgisruntime:arcgis-java-resources:$arcgisVersion" | ||
// handle SLF4J http://www.slf4j.org/codes.html#StaticLoggerBinder | ||
runtimeOnly 'org.slf4j:slf4j-nop:1.7.32' | ||
implementation 'org.jooq:joox:1.4.0' | ||
} | ||
|
||
task createGradlePropertiesAndWriteApiKey { | ||
description = "Creates a new gradle.properties file with an empty API key variable in the user home ./gradle folder, if the file doesn't already exist." | ||
group = "build" | ||
def propertiesFile = new File("${System.properties.getProperty("user.home")}/.gradle/gradle.properties") | ||
if (!propertiesFile.exists()) { | ||
print("Go to " + new URL("https://developers.arcgis.com/dashboard") + " to get an API key.") | ||
print(" Add your API key to ${System.properties.getProperty("user.home")}\\.gradle\\gradle.properties.") | ||
propertiesFile.write("apiKey = ") | ||
} | ||
} | ||
|
||
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 { | ||
doFirst { | ||
// sets the API key from the gradle.properties file as a Java system property | ||
systemProperty 'apiKey', apiKey | ||
} | ||
dependsOn copyNatives | ||
mainClassName = 'com.esri.samples.display_dimensions.DisplayDimensionsLauncher' | ||
} | ||
|
||
jar { | ||
duplicatesStrategy = DuplicatesStrategy.EXCLUDE | ||
manifest { | ||
attributes("Main-Class": "$mainClassName") | ||
} | ||
from { | ||
configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) } | ||
} | ||
|
||
// exclude signing files that come from dependencies | ||
exclude "META-INF/*.SF" | ||
exclude "META-INF/*.DSA" | ||
exclude "META-INF/*.RSA" | ||
} | ||
|
||
task productionZip(type: Zip) { | ||
group = 'distribution' | ||
from ("samples-data") { | ||
into "samples-data" | ||
} | ||
from copyNatives | ||
from jar.destinationDirectory | ||
into (project.name) | ||
archiveBaseName = project.name | ||
} | ||
|
||
wrapper { | ||
gradleVersion = '7.3' | ||
} |
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 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="" | ||
|
||
# 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.