POST
|
Yep. You'll want to replace the geometry. Depending on the use case you might be able to hold on to the original geometry and generate new buffers, or you might be able to buffer out from the buffered one, but that could introduce cumulative errors. Probably OK for a simple circle buffer around a point, but may get tricky with an arbitrary polygon as the original source, especially if you'll want to "shrink" the buffer.
... View more
10-21-2022
08:32 AM
|
2
|
0
|
445
|
POST
|
For performance reasons, where objects have a strong dependent relationship (e.g. a FeatureLayer is dependent on (or "owns") a FeatureTable), that is limited to a single "owner" at a time. It looks like you do not need this line: arSceneView.sceneView.scene.tables.addAll(featureTables) You are taking the feature tables that you have already created feature layers for (i.e. each FeatureTable is already "owned" by a FeatureLayer) and trying to add them to the Scene's tables collection. This will try to set the Scene as the table's owner, but the layer is already the owner. The scene's tables property is for standalone tables that are not used by a layer (perhaps they're related to features and/or don't have geometry).
... View more
10-14-2022
08:48 AM
|
0
|
1
|
512
|
POST
|
I'm not sure why the fromJSON call should have stopped working, but one option you could try (and it might make for more maintainable code) is to use the new Labeling API we added at 100.11. See https://developers.arcgis.com/qt/cpp/api-reference/esri-arcgisruntime-labeldefinition.html for more properties you can now set through the API.
... View more
09-06-2022
07:58 AM
|
1
|
1
|
681
|
POST
|
It's not planned, no. Most people will use Runtime directly against the service. In your case do you need to parse out just the compressed geometry, or would it be helpful to be able to parse the entire route result into an AGSRouteResult?
... View more
08-30-2022
10:00 AM
|
0
|
1
|
1452
|
POST
|
Hi @AndriyFedin There might be two problems. Runtime only supports LERC tiles for elevation, and not visualization. You would need to publish a service that supports one of the formats listed here. Sorry we didn't spot that sooner when you replied in the original post! Note that Runtime cannot reproject tiled images, so if you tried to display this service (WGS84) in a Web Mercator map, it would not display. That's something you can work around by suitably authoring/constructing the map. However, even if that's the case, the format can't be LERC. Hope that helps!
... View more
08-30-2022
07:48 AM
|
0
|
0
|
465
|
POST
|
I don't have a huge amount of experience here, but the resolutions look really small. Have a look at this tiling scheme: https://services.arcgisonline.com/arcgis/rest/services/Canvas/World_Dark_Gray_Base/MapServer The resolution (real world meters per pixel) you have for your global scale (1:5,910,000,000) is about the same as 1:4,500 (level 17) in the standard web mercator tiling scheme. It's about 100,000 times off from the resolution of that scale's tiles in the standard scheme. I'd have a look at the parameters you're using when exporting from Pro.
... View more
08-26-2022
10:58 AM
|
0
|
0
|
1502
|
POST
|
FYI, I built this from the Terraformer code. Hope that works for you! extension AGSGeometry {
static func decodeCompressedGeometry(_ compressedString: String, spatialReference sr: AGSSpatialReference) -> AGSPolyline? {
// Break the string up into signed parts.
// The first part is a coefficient.
// Subsequent pairs of parts make up the remaining coordinates.
let pattern = #"((\+|\-)[^\+\-]+)"#
guard let regex = try? NSRegularExpression(pattern: pattern, options: []) else {
return nil
}
let range = NSRange(compressedString.startIndex ..< compressedString.endIndex,
in: compressedString)
let components = regex.matches(in: compressedString, range: range).compactMap {
Range($0.range(at: 0), in: compressedString)
}.compactMap { range -> Double? in
let val = Int(compressedString[range], radix: 32) ?? 0
return Double(val)
}
guard let coefficient = components.first,
(components.count - 1) % 2 == 0 else {
preconditionFailure("Invalid compressed geometry. Needs coefficient plus even number of subsequent parts!")
}
var coordinatePairs = [(Double,Double)]()
for i in stride(from: 1, through: components.count - 1, by: 2) {
let pair = (components[i],components[i+1])
coordinatePairs.append(pair)
}
var xDiffPrev = 0.0
var yDiffPrev = 0.0
var x = 0.0
var y = 0.0
let builder = coordinatePairs.reduce(AGSPolylineBuilder(spatialReference: sr)) { builder, pair in
x = pair.0 + xDiffPrev
xDiffPrev = x
y = pair.1 + yDiffPrev
yDiffPrev = y
let newPoint = AGSPoint(x: x / coefficient, y: y / coefficient, spatialReference: sr)
builder.add(newPoint)
return builder
}
return builder.toGeometry()
}
}
... View more
08-23-2022
12:00 PM
|
1
|
3
|
1463
|
POST
|
So, I have some information, but it means you'll have to write some code yourself 🙂 Take a look at this code form Terraformer, which shows how to decompress this geometry using JavaScript. You'd have to translate that to Swift of course but it should show how to do it. function decompressGeometry(str) {
var xDiffPrev = 0;
var yDiffPrev = 0;
var points = [];
var x, y;
var strings;
var coefficient;
// Split the string into an array on the + and - characters
strings = str.match(/((\+|\-)[^\+\-]+)/g);
// The first value is the coefficient in base 32
coefficient = parseInt(strings[0], 32);
for (var j = 1; j < strings.length; j += 2) {
// j is the offset for the x value
// Convert the value from base 32 and add the previous x value
x = (parseInt(strings[j], 32) + xDiffPrev);
xDiffPrev = x;
// j+1 is the offset for the y value
// Convert the value from base 32 and add the previous y value
y = (parseInt(strings[j + 1], 32) + yDiffPrev);
yDiffPrev = y;
points.push([x / coefficient, y / coefficient]);
}
return points;
} This pull request also includes a test that could help. If you come up with a Swift version of this, please share! I won't have time to try until next week, but it should be achievable. For reference, here is some really old documentation that explains the process.
... View more
08-18-2022
06:44 AM
|
0
|
4
|
1478
|
POST
|
ArcGIS Runtime SDK for iOS cannot open file geodatabases (you would need Local Server for that, which is only available on .NET, Java, and Qt when deploying to Windows or Linux). I would suggest using ArcGIS Pro to create a Mobile Geodatabase, which can be opened using the AGSGeodatabase class. You could also conceivably use a GeoPackage but a) that is more limited than a Mobile Geodatabase in terms of the schema it supports (attachments, related records, domains, etc.) and b) it would require a Standard Runtime license.
... View more
08-18-2022
06:32 AM
|
0
|
1
|
546
|
POST
|
You cannot load a local .tiff file with a Lite license. However, you could use ArcGIS Pro to create a tile package (.TPK to .TPKX file) of elevation from the TIFF. Since TPK and TPKX are proprietary Esri formats, they can be used with the Lite Runtime license. That can then be used as an elevation source using AGSArcGISTiledElevationSource.
... View more
08-18-2022
06:28 AM
|
0
|
0
|
529
|
POST
|
Using local raster files requires a Standard level license. You are most likely using the free Lite license.
... View more
08-17-2022
06:59 AM
|
1
|
2
|
537
|
POST
|
I see. Interesting. I'll do some digging and will let you know what I find out. In the meantime, does your server specify returnRoutes=true? My understanding (though I'm slightly guessing at this point) is than maneuver geometries come back compressed, but the overall route geometry should be a full Esri JSON geometry that you could pass to AGSPolyline.fromJSON.
... View more
08-12-2022
07:39 AM
|
0
|
0
|
1500
|
POST
|
🫣 Could you share your code that does that please? I'd like to understand why that's happening. Could be helpful in documenting things.
... View more
08-12-2022
07:37 AM
|
0
|
0
|
2108
|
POST
|
@coryeicher wrote: Well, there's one vector tile basemap that works in Unity, but it's underwhelming for most purposes.... Blank White Vector Basemap No vector tile layer works in the ArcGIS Maps SDK for Unity. If it shows up as blank white tiles in Unity, that's just a happy coincidence 🙂
... View more
08-12-2022
07:18 AM
|
0
|
2
|
2112
|
POST
|
The Layers documentation page in the ArcGIS Maps SDK for Unity documentation covers the layer types that are currently supported: In ArcGIS Maps SDK for Unity, basemap layers are currently limited to image tile layers. Image tile layers can use an online image tile service or a local image tile package as a data source. See Image tile layers below for more information. Specifically: Basemap layer types Data layers But in short, we currently support image tile layers as basemap and data layers, and 3D object scene layers and integrated mesh scene layers as data layers. All layer types can read from a service or a local package.
... View more
08-12-2022
07:15 AM
|
1
|
0
|
394
|
Title | Kudos | Posted |
---|---|---|
1 | 10-03-2024 04:31 PM | |
2 | 10-03-2024 03:16 PM | |
1 | 10-02-2024 04:25 PM | |
1 | 09-24-2024 08:52 AM | |
1 | 09-16-2024 10:25 AM |