|
POST
|
I am in the same boat with three county atlases I converted to a Pro project. at 300 dpi each exported from ArcMap to about a 75 mb PDF. The same PDF from Pro at 300 dpi is 1.25 gb. This is a 151 page document that only has two feature classes in the map frame, street centerlines and water bodies. If you export the map series to PNG, which isnt an option in the GUI you have to do it from python, you can merge those into a single PDF using any number of free or paid PDF tools. Its not a great solution but it works. edit: a bit of script for the export to PNG is available already written at the bottom of the map series class documentation.
... View more
01-18-2018
09:21 AM
|
3
|
1
|
7914
|
|
POST
|
I have an idea for a webmap that I want to put together for my Traffic Engineering department. They currently are not using the esri telecom model but if this is feasible I want to try to get them in the model deep enough for it to work. What I want to do is give them the ability to click a line, presumably FiberCable, which would populate a list of the Fiber within that they could choose from. That's the easy part. What I want is for them to choose a Fiber and then have the map highlight all the places that fiber goes. So I would, from looking at the model docs, select the FiberCable then select any SpliceClosure points or other network objects at the ends of the line segment, select related fiber in those objects using the Fiber ID number, if the fiber is in them highlight it on the map and do the process over again to any objects touching that object. Does this make sense? I feel like there has to be a better way than this chain reaction of selections but there might not be. The problem is in having a change in Fiber ID after a SpliceClosure or something. Does the ID change in this case or use one ID be used for the whole circuit that Fiber makes? I believe that ID is FIBERNUMBER in Fiber which isnt a GUID so it could be duplicated but I'm not sure if thats the best way to manage the data.
... View more
01-05-2018
09:11 AM
|
0
|
0
|
503
|
|
IDEA
|
There is a function, DomainName(), in Arcade to retrieve the domain description for a field value in Arcade, it would nice if there was a similar function for subtype fields.
... View more
10-31-2017
01:57 PM
|
11
|
3
|
2839
|
|
POST
|
I am putting a simple map together to embed in a page about an impending flood zone update. The symbology for the two layers, current zones and draft zones, is the same so its not very easy to interpret where changes are happening. I'm using the swipe widget in JS-API 3.22 to turn the draft zones on with the current zones always on. Can I do anything that will let me swipe the current flood zones off as the draft flood zones turn on? Here's a link to what I have now. It'll be iframed into a page with more information once I can get this worked out.
... View more
10-26-2017
11:18 AM
|
0
|
1
|
905
|
|
POST
|
Spoke too soon. I cant stop the updates now even if I close the popup. The close button wouldn't work initially because the scope of image_refresh_interval was limited. I hitched the function in setTimeout and it fixed that but the app keeps polling the image URL for every feature you click even after closing the popup. I attached the whole page below. It might still be a scope problem. <!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="viewport" content="initial-scale=1, maximum-scale=1,user-scalable=no">
<link rel="stylesheet" href="https://js.arcgis.com/4.4/esri/css/main.css">
<link rel="stylesheet" href="https://js.arcgis.com/4.4/dijit/themes/claro/claro.css">
<script src="https://js.arcgis.com/4.4/"></script>
<style>
html,
body,
#mapDiv {
height: 100%;
width: 100%;
margin: 0;
padding: 0;
}
</style>
<script>
require([
"esri/Map",
"esri/views/MapView",
"esri/WebMap",
"esri/layers/FeatureLayer",
"dojo/query",
"esri/core/watchUtils",
"dojo/_base/lang",
"dojo/domReady!"
], function (
Map,
MapView,
WebMap,
FeatureLayer,
query,
watchUtils,
lang
) {
var cameras = new FeatureLayer({
url: "http://gis.baycountyfl.gov/arcgis/rest/services/TrafficCameras/MapServer/0",
outFields: ["*"],
popupTemplate: {
title: "{Location} {Camera}",
content: [{
type: "media",
mediaInfos: [{
title: "",
type: "image",
value: {
sourceURL: "http://tmc.baycountyfl.gov/CameraImages/Camera{Camera}.jpg?t=" + new Date().getTime()
}
}]
}]
}
}),
mapobj = new Map({
basemap: "streets",
layers: [cameras]
}),
view = new MapView({
map: mapobj,
container: "mapDiv",
center: [-85.726147, 30.183486],
zoom: 14
});
view.popup.viewModel.actions = [];
view.popup.watch("visible", function (visible) {
if (visible === true) {
watchUtils.whenNot(view.popup.viewModel, "pendingPromisesCount", function (cnt) {
setTimeout(lang.hitch(this, function () {
var media_item = query(".esri-popup-renderer__media-item > img");
if (media_item[0]) {
var image = media_item[0];
console.log(image.src);
function updateImage() {
image.src = image.src.split("?")[0] + "?t=" + new Date().getTime();
}
this.image_refresh_interval = setInterval(updateImage, 1000);
}
}, 200));
});
} else {
clearInterval(this.image_refresh_interval);
}
});
});
</script>
</head>
<body>
<div id="mapDiv"></div>
</body>
</html>
... View more
08-23-2017
11:25 AM
|
0
|
1
|
1604
|
|
POST
|
Worked like a charm. Thanks Robert. The current cameras map is a Google Maps mashup in a 3rd party interface. Our Traffic Eng department wanted me to make them a simple esri based map to replace it that they can embed.
... View more
08-23-2017
10:07 AM
|
0
|
0
|
1604
|
|
POST
|
I have an info template that is just a single picture from a traffic camera that's inserted using the media type. Nothing fancy here. I want it to update the image every second but I cant seem to get the node for the image. I've used every kind of getElementsBy and querySelector and combination of the two that I can think of but the image eludes me. The best I have gotten is using what I have below which yields me an html collection with one object, the esri-popup-renderer__media-item, that has the image as a child but when I try to search it for the img tag I get nothing. I tried jQuery selection with $(".esri-popup-renderer__media-item img:first") but it returned the entire html document. If there is an easier way to make this image update I'm willing to completely abandon this strategy. view.popup.watch("visible", function (visible) {
if (visible === true) {
var media_item = document.getElementsByClassName("esri-popup-renderer__media-item");
console.log(media_item);
var image = media_item.getElementsByTagName("img");
console.log(image.src);
function updateImage() {
image.src = image.src.split("?")[0] + "?t=" + new Date().getTime();
}
var image_refresh_interval = setInterval(updateImage, 1000);
}else{
clearInterval(image_refresh_interval);
}
});
... View more
08-23-2017
07:24 AM
|
0
|
4
|
2599
|
|
POST
|
I was planning on setting up AD users with AGS roles and GIS tier. Any way to make it work with that configuration? The enterprise is available externally and users off network will be connecting using accounts in AD. If I go web tier and someone tries to connect who isn't on a computer connected to the domain do they get the normal ArcGIS authentication popup? This stuff really isn't clear in the AGS documentation.
... View more
08-14-2017
11:25 AM
|
0
|
1
|
1039
|
|
POST
|
Is there a way to have my users not have to enter domain\username when logging into a service? I would prefer if they just typed in their username.
... View more
08-14-2017
08:40 AM
|
0
|
3
|
1359
|
|
IDEA
|
Well all this is irrelevant now. Announced this week is that SM is being released as an actual product in approx Q3 for a yet undetermined cost as ArcGIS Monitor. Looks to be a more fleshed out and powerful version of the software than is available now. As an official product it will get support from normal esri support services rather than only though professional services. I guess we complained enough they decided if we really want it that bad we might be willing to pay for it.
... View more
07-14-2017
09:53 AM
|
0
|
1
|
3359
|
|
IDEA
|
There should be the ability to add pre-made text to drop in, such as a disclaimer, that can be saved to the dynamic text insert menu. Layout insert can do this already with custom layout sizes, text should be able to as well for things that are regularly inserted.
... View more
06-15-2017
07:05 AM
|
8
|
4
|
1031
|
|
POST
|
Thanks for the reply. I would probably use transactional replication covering the entire database so we dont have any potential to break geodatabase functions accidentally. We have MSSQL for all three databases. If production wasn't ~16.5GB I would just do a snapshot every night. Right now we replicate nightly but that is a large file to move every day.
... View more
02-16-2017
08:08 AM
|
0
|
0
|
1440
|
|
POST
|
Ive actually found an even better way of doing this though some googling. Once I had "tasklist" the searching was a bit easier. The code below should be run in a BAT. All the addition is done in the commands and sent to the SQL Server using the sqlcmd command. Because sqlcmd is needed this has to be run in a place where there is SQL Server installed. For us it works out because we have SQL and AGS on the same machine. If they are separate you can add the /s flag to tasklist and give it the IP for the machine with AGS. By removing python from the mix and thus not having to do any imports the speed is up dramatically. Run as a schedualed task same as before but use the BAT instead of the PY. Dont know if Oracle and other DBMSs have a similar command line function but I would imagine they do. EDIT: I should note that in the query that SM does for this I convert it to GB so its a little less crazy to look at since the is reported in KB. It goes on a graph with the Total Server Memory (KB) metric that SQL Server keeps which is how much memory its currently using. @Echo Off
Set "sum=0"
For /F "Tokens=6-7 Delims=., " %%a In (
'TaskList /NH /FI "ImageName Eq ArcSOC.exe"') Do Set/A sum+=%%a%%b
For /F "Tokens=6-7 Delims=., " %%a In (
'TaskList /NH /FI "ImageName Eq javaw.exe"') Do Set/A sum+=%%a%%b
set "query="UPDATE sde.SERVERMONITORMETRICS SET VALUE = %sum% WHERE COUNTER = 'FO AGS MEMORY'""
sqlcmd -S bay-arcgis-pro -d sde -Q %query%
... View more
02-14-2017
07:21 AM
|
0
|
0
|
2021
|
|
POST
|
I just finished writing a small script that lets me add the metric. I took the System Monitor help doc advice and instead of setting up a collector for this I'm grabbing the value with a python script and putting it into a table in a database which is queried like anything else from a database in SM. I made a table that isnt part of the geodatabase in our production environment and then execute the tasklist for ArcSOC and javaw on the two servers in our publication environment. That is returned as text so I broke it down to an integer to stick in the database. The table in the database is called SERVERMONITORMETRICS and has two columns, COUNTER and VALUE. pypyodbc updates the corresponding rows in the database and SM grabs those values. Windows Task Scheduler has the script run every 5 minutes. Might be an easier way to do it but this works for me. import pypyodbc, subprocess
PUBAGSMEMORY = sum([int(i.split(' ')[-2].replace(',','')) for i in subprocess.check_output('TASKLIST /s xx.xx.xx.xx /FO LIST /FI "Imagename eq ArcSOC.exe"').split('\n') if 'Mem Usage:' in i]) + sum([int(i.split(' ')[-2].replace(',','')) for i in subprocess.check_output('TASKLIST /s xx.xx.xx.xx /FO LIST /FI "Imagename eq javaw.exe"').split('\n') if 'Mem Usage:' in i])
FOAGSMEMORY = sum([int(i.split(' ')[-2].replace(',','')) for i in subprocess.check_output('TASKLIST /s xx.xx.xx.xx /FO LIST /FI "Imagename eq ArcSOC.exe"').split('\n') if 'Mem Usage:' in i]) + sum([int(i.split(' ')[-2].replace(',','')) for i in subprocess.check_output('TASKLIST /s xx.xx.xx.xx /FO LIST /FI "Imagename eq javaw.exe"').split('\n') if 'Mem Usage:' in i])
db = pypyodbc.connect('Driver={SQL Server}; Server=bay-arcgis-pro; Database=sde; Uid=*****; Pwd=*****;')
cursor = db.cursor()
query = '''
UPDATE sde.SERVERMONITORMETRICS
SET VALUE = %s
WHERE COUNTER = 'PUB AGS MEMORY'
UPDATE sde.SERVERMONITORMETRICS
SET VALUE = %s
WHERE COUNTER = 'FO AGS MEMORY'
'''%(PUBAGSMEMORY, FOAGSMEMORY)
cursor.execute(query)
cursor.commit()
del cursor, db
... View more
02-13-2017
12:19 PM
|
1
|
1
|
2021
|
|
POST
|
I want to include AGS memory use in System Monitor but the way each service spins up its own thread makes measuring it a bit tricky since the memory load is spread out. Currently on AGS 10.2.2 but will shortly be updating to 10.5 if that makes a difference.
... View more
02-13-2017
08:31 AM
|
0
|
7
|
2797
|
| Title | Kudos | Posted |
|---|---|---|
| 1 | 05-06-2020 09:37 AM | |
| 3 | 02-28-2018 01:53 PM | |
| 1 | 02-13-2017 12:19 PM | |
| 1 | 06-22-2020 05:52 AM | |
| 8 | 01-23-2019 11:02 AM |
| Online Status |
Offline
|
| Date Last Visited |
04-13-2021
10:23 AM
|