|
POST
|
Be sure to vote for Sync Collector for ArcGIS via USB! It shouldn't be this hard to perform two-way sync with collector. ArcPad does it (which is going away), why not collector?
... View more
05-17-2016
05:29 AM
|
0
|
0
|
815
|
|
POST
|
Same as how ArcPad works: Plug the device into a computer via USB, provision base maps and data via USB, and sync Adds/Updates/Deletes collected on the Collector Device back to host databases via USB. Given the quantity of comments on Geonet about displeasure with performance with wifi syncing, especially with photo collection, and the number of current ArcPad users that will not be able to convert to a "works with wireless only" product once ArcPad is retired in a few years, I find it shockingly surprising that Esri is taking mobile applications in the must-have-wireless connection direction, especially considering where most mobile data collection occurs: remote environments where back-offices have no wifi.
... View more
05-17-2016
05:25 AM
|
2
|
1
|
3021
|
|
POST
|
Use AGO, but edit in JSON, and replace old data sources with new. I've had good luck changing data sources AND copying content to different accounts that way.
... View more
05-16-2016
12:58 PM
|
0
|
0
|
1378
|
|
POST
|
Yup it's gone. Message me thu Geonet with your email and I'll send you a copy. Esri, any chance this link could be restored? Map Symbols & Patterns for NPS Maps , the link is also dead there.....
... View more
05-16-2016
11:28 AM
|
0
|
1
|
4737
|
|
POST
|
You are correct that send mail SP's only work out of the master DB. However, you can put your trigger on the user database, and when some event occurs (e.g. add a new record), it will call the SP in the master DB. One problem you may be having is one of permissions, the service account (PTL? AGSVR?) needs to have permission to "send mail". The following, which performs a test insert every hour and lets me know if it fails, is not really related to a trigger, but if you reverse engineer it, you can achieve the desired result. BEGIN TRY
DECLARE @id as integer
EXEC dbo.next_rowid 'dbo', 'WILD_BEAR_MON_PT', @id OUTPUT;
SET QUOTED_IDENTIFIER ON
INSERT INTO [dbo].[WILD_BEAR_MON_PT]
(OBJECTID,
LOC_NAME,
shape)
VALUES(@id, 'ZZZ_HEALTH_CHECK_TEST_DELETE', geography::STPointFromText('POINT(-83.499752 35.687597)', 4269))
DELETE FROM WILD_BEAR_MON_PT WHERE LOC_NAME = 'ZZZ_HEALTH_CHECK_TEST_DELETE'
END TRY
BEGIN CATCH
DECLARE @ErrorMessage NVARCHAR(4000);
DECLARE @ErrorSeverity INT;
DECLARE @ErrorState INT;
SELECT
@ErrorMessage = ERROR_MESSAGE(),
@ErrorSeverity = ERROR_SEVERITY(),
@ErrorState = ERROR_STATE();
DECLARE @ErrorText NVARCHAR(4000);
DECLARE @ErrorDisclaimer NVARCHAR(4000);
SET @ErrorText = 'Dammit Jim! The Engines can''t take this! Somethings wrong with the Bears Database! '
SET @ErrorDisclaimer = 'The Bears Database is having some sort of problem. Editing is disabled and read-access may not be working. '
SET @ErrorMessage = @ErrorText + @ErrorMessage + @ErrorDisclaimer
EXEC msdb.dbo.sp_send_dbmail
@profile_name='Captain Kirk',
@recipients='[email protected]',
@subject='Error in the Bears Database',
@body = @ErrorMessage;
END CATCH;
... View more
05-11-2016
12:39 PM
|
0
|
0
|
1314
|
|
POST
|
This will create a view (sort of table) that will display your coded value domain: CREATE VIEW [dbo].[View_Landform]
AS
SELECT codedValue.value('Code[1]', 'nvarchar(max)') AS , codedValue.value('Name[1]', 'nvarchar(max)') AS [Value] FROM dbo.GDB_ITEMS AS items INNER JOIN dbo.GDB_ITEMTYPES AS itemtypes ON items.Type = itemtypes.UUID CROSS APPLY items.Definition.nodes('/GPCodedValueDomain2/CodedValues/CodedValue') AS CodedValues(codedValue) WHERE itemtypes.Name = 'Coded Value Domain' AND items.Name = 'Landform' GO The edit method described in Re-order Attribute Domain Values can also be used to execute the edits you desire without having to remove the domain from the FC attribute and re-import it.
... View more
05-11-2016
04:10 AM
|
0
|
0
|
1942
|
|
POST
|
With the python posted below, I have it attached to a model Which has a parameter Which runs successfully. I'm also able to successfully publish it as a GP Service. Here's my first problem: Despite having a "Parameter", none is available to the Widget? Second problem. When I execute the tool, I get this hungous url. What'd I really like is just the file name as a hyperlink to the full URL. Out of the box, the export web map (print to PDF) GP Tool does this nicely, why can't I make this work with this? try:
from xml.etree import cElementTree as ET
except:
from xml.etree import ElementTree as ET
import arcpy, sys, traceback
from arcpy import env
import time, os
from subprocess import call
unicode = str
OutName = arcpy.GetParameterAsText(0)
fms = arcpy.FieldMappings()
fms.addTable("\\\\someserver\DATASTORE\GP\\RESTON FISH.sde\\FISH.DBO.FISH_BARRIERS")
FLD_STATION_NAME = arcpy.FieldMap()
FLD_STREAMNAME = arcpy.FieldMap()
FLD_EDITDATE = arcpy.FieldMap()
FLD_STATION_NAME.addInputField("\\\\someserver\DATASTORE\GP\\RESTON FISH.sde\\FISH.DBO.FISH_BARRIERS", "STATION_NAME")
STATION_NAME_MAP = FLD_STATION_NAME.outputField
STATION_NAME_MAP.name = "Name"
FLD_STATION_NAME.outputField = STATION_NAME_MAP
fms.addFieldMap(FLD_STATION_NAME)
FLD_STREAMNAME.addInputField("\\\\someserver\DATASTORE\GP\\RESTON FISH.sde\\FISH.DBO.FISH_BARRIERS", "STREAMNAME")
STREAMNAME_MAP = FLD_STREAMNAME.outputField
STREAMNAME_MAP.name = "Descript"
FLD_STREAMNAME.outputField = STREAMNAME_MAP
fms.addFieldMap(FLD_STREAMNAME)
FLD_EDITDATE.addInputField("\\\\someserver\DATASTORE\GP\\RESTON FISH.sde\\FISH.DBO.FISH_BARRIERS", "EDITDATE")
EDITDATE_MAP = FLD_EDITDATE.outputField
EDITDATE_MAP.name = "DateTimeS"
EDITDATE_MAP.type = "Text"
FLD_EDITDATE.outputField = EDITDATE_MAP
fms.addFieldMap(FLD_EDITDATE)
arcpy.FeatureClassToFeatureClass_conversion("\\\\someserver\DATASTORE\GP\\RESTON FISH.sde\\FISH.DBO.FISH_BARRIERS", "\\\\someserver\DATASTORE\GP\\", "FISH_BARRIERS.shp", "", fms)
gpx = ET.Element("gpx", xmlns="http://www.topografix.com/GPX/1/1",
xalan="http://xml.apache.org/xalan",
xsi="http://www.w3.org/2001/XMLSchema-instance",
creator="Esri",
version="1.1")
def prettify(elem):
"""Return a pretty-printed XML string for the Element.
"""
from xml.dom import minidom
rough_string = ET.tostring(elem, 'utf-8')
reparsed = minidom.parseString(rough_string)
return reparsed.toprettyxml(indent=" ")
def featuresToGPX(inputFC, outGPX, zerodate, pretty):
''' This is called by the __main__ if run from a tool or at the command line
'''
descInput = arcpy.Describe(inputFC)
if descInput.spatialReference.factoryCode != 4326:
arcpy.AddWarning("Input data is not projected in WGS84,"
" features were reprojected on the fly to create the GPX.")
generatePointsFromFeatures(inputFC , descInput, zerodate)
# Write the output GPX file
try:
if pretty:
gpxFile = open(outGPX, "w")
gpxFile.write(prettify(gpx))
else:
gpxFile = open(outGPX, "wb")
ET.ElementTree(gpx).write(gpxFile, encoding="UTF-8", xml_declaration=True)
except TypeError as e:
arcpy.AddError("Error serializing GPX into the file.")
finally:
gpxFile.close()
def generatePointsFromFeatures(inputFC, descInput, zerodate=False):
def attHelper(row):
# helper function to get/set field attributes for output gpx file
pnt = row[1].getPart()
valuesDict["PNTX"] = str(pnt.X)
valuesDict["PNTY"] = str(pnt.Y)
Z = pnt.Z if descInput.hasZ else None
if Z or ("ELEVATION" in cursorFields):
valuesDict["ELEVATION"] = str(Z) if Z else str(row[fieldNameDict["ELEVATION"]])
else:
valuesDict["ELEVATION"] = str(0)
valuesDict["NAME"] = row[fieldNameDict["NAME"]] if "NAME" in fields else " "
valuesDict["DESCRIPT"] = row[fieldNameDict["DESCRIPT"]] if "DESCRIPT" in fields else " "
if "DATETIMES" in fields:
row_time = row[fieldNameDict["DATETIMES"]]
formatted_time = row_time if row_time else " "
elif zerodate and "DATETIMES" not in fields:
formatted_time = time.strftime("%Y-%m-%dT%H:%M:%SZ", time.gmtime(0))
else:
formatted_time = time.strftime("%Y-%m-%dT%H:%M:%SZ", time.gmtime(0)) if zerodate else " "
valuesDict["DATETIMES"] = formatted_time
return
#-------------end helper function-----------------
def getValuesFromFC(inputFC, cursorFields ):
previousPartNum = 0
startTrack = True
# Loop through all features and parts
with arcpy.da.SearchCursor(inputFC, cursorFields, spatial_reference="4326", explode_to_points=True) as searchCur:
for row in searchCur:
if descInput.shapeType == "Polyline":
for part in row:
newPart = False
if not row[0] == previousPartNum or startTrack is True:
startTrack = False
newPart = True
previousPartNum = row[0]
attHelper(row)
yield "trk", newPart
elif descInput.shapeType == "Multipoint" or descInput.shapeType == "Point":
# check to see if data was original GPX with "Type" of "TRKPT" or "WPT"
trkType = row[fieldNameDict["TYPE"]].upper() if "TYPE" in fields else None
attHelper(row)
if trkType == "TRKPT":
newPart = False
if previousPartNum == 0:
newPart = True
previousPartNum = 1
yield "trk", newPart
else:
yield "wpt", None
# ---------end get values function-------------
# Get list of available fields
fields = [f.name.upper() for f in arcpy.ListFields(inputFC)]
valuesDict = {"ELEVATION": 0, "NAME": "", "DESCRIPT": "", "DATETIMES": "", "TYPE": "", "PNTX": 0, "PNTY": 0}
fieldNameDict = {"ELEVATION": 0, "NAME": 1, "DESCRIPT": 2, "DATETIMES": 3, "TYPE": 4, "PNTX": 5, "PNTY": 6}
cursorFields = ["OID@", "SHAPE@"]
for key, item in valuesDict.items():
if key in fields:
fieldNameDict[key] = len(cursorFields) # assign current index
cursorFields.append(key) # build up list of fields for cursor
else:
fieldNameDict[key] = None
for index, gpxValues in enumerate(getValuesFromFC(inputFC, cursorFields)):
if gpxValues[0] == "wpt":
wpt = ET.SubElement(gpx, 'wpt', {'lon':valuesDict["PNTX"], 'lat':valuesDict["PNTY"]})
wptEle = ET.SubElement(wpt, "ele")
wptEle.text = valuesDict["ELEVATION"]
wptTime = ET.SubElement(wpt, "time")
wptTime.text = valuesDict["DATETIMES"]
wptName = ET.SubElement(wpt, "name")
wptName.text = valuesDict["NAME"]
wptDesc = ET.SubElement(wpt, "desc")
wptDesc.text = valuesDict["DESCRIPT"]
else: #TRKS
if gpxValues[1]:
# Elements for the start of a new track
trk = ET.SubElement(gpx, "trk")
trkName = ET.SubElement(trk, "name")
trkName.text = valuesDict["NAME"]
trkDesc = ET.SubElement(trk, "desc")
trkDesc.text = valuesDict["DESCRIPT"]
trkSeg = ET.SubElement(trk, "trkseg")
trkPt = ET.SubElement(trkSeg, "trkpt", {'lon':valuesDict["PNTX"], 'lat':valuesDict["PNTY"]})
trkPtEle = ET.SubElement(trkPt, "ele")
trkPtEle.text = valuesDict["ELEVATION"]
trkPtTime = ET.SubElement(trkPt, "time")
trkPtTime.text = valuesDict["DATETIMES"]
if __name__ == "__main__":
''' Gather tool inputs and pass them to featuresToGPX
'''
'''OutName = arcpy.GetParameterAsText(0)
'''
inputFC = "\\\\someserver\DATASTORE\GP\\FISH_BARRIERS.shp"
outGPX = os.path.join(arcpy.env.scratchFolder, OutName)
zerodate = "#"
pretty = "#"
featuresToGPX(inputFC, outGPX, zerodate, pretty)
arcpy.Delete_management("\\\\someserver\DATASTORE\GP\\FISH_BARRIERS.shp")
... View more
05-01-2016
02:42 PM
|
0
|
3
|
7771
|
|
POST
|
Update...implementing some of your answer, setting the job to asych, and setting "add to display" in the model solved this. You can infer I spent ALL WEEKEND ON THIS..... Once I polish up the workflow I'll document it in a blog.
... View more
05-01-2016
01:39 PM
|
1
|
1
|
2114
|
|
POST
|
Russel are there planned upgrades to this tool to allow bi-directional sync where no wireless is available to provision the device, or sync it back to the parent service?
... View more
05-01-2016
10:00 AM
|
0
|
3
|
3021
|
|
POST
|
So I've modified the PY as such: inputFC = "\\\\server\DATASTORE\GP\\FISH_BARRIERS.shp" outGPX = os.path.join(arcpy.env.scratchFolder, OutName) zerodate = "#" pretty = "#" featuresToGPX(inputFC, outGPX, zerodate, pretty) arcpy.Delete_management("\\\\server\DATASTORE\GP\\FISH_BARRIERS.shp") Re-ran the tool, republished it, same result: Added it to a WAB (developer) GP Widget Hit execute, same result: nothing. Am I missing something elementary-obvious or does this workflow only work with the export-web-map-to-pdf task example?
... View more
05-01-2016
09:53 AM
|
0
|
0
|
2114
|
|
POST
|
From Geoprocessing widget—Web AppBuilder for ArcGIS (Developer Edition) | ArcGIS for Developers : " Caution: Web AppBuilder integrated in ArcGIS Online can access public and secured services from ArcGIS Server. However, secured services do not support ArcGIS Server with Web Tier authentication, such as IWA, PKI, or LDAP authentication. Refer to ArcGIS Online ArcGIS Sever web services for more information." Could one read between the lines, and assume that since the author DID NOT explicitly say "Integrated with Portal for ArcGIS", that WAB WILL work with secure ArcGIS Server services, specifically, IWA, if the app is registered with PTL and not AGOL? I'm running into an issue where the GP Widget in WAB(Dev) will validate the URL for an IWA/HTTPS GP Service, but will go no further than that.
... View more
04-30-2016
07:07 AM
|
0
|
1
|
2389
|
|
POST
|
Thanks. Based on https://community.esri.com/thread/104530#comment-388705 , Custom Geoprocessing Tool Reporting for ArcGIS online , Geoprocessing Service Output File scratch directory path to url , and Geoprocessing Service Output Directory that seems to be the path. But I'm having a hard time figuring out how to a) replicate your example in my specific situation, and b) how to present the file to the user. Where this is all leading to, I'm hoping to embed the GP service in the GP Widget in WAB, with similar functionality as how Tutorial: Publishing additional services for printing—Documentation | ArcGIS for Server works in WAB: delivering a click-to-download pdf. In this case, I need a click-to-download gpx file. But first I have to figure out how to make the underlying logic work. Thanks!
... View more
04-30-2016
06:56 AM
|
0
|
0
|
2114
|
|
POST
|
I'm sure this is a really elementary solution, I'm just over thinking it. I have this really simple model that takes a feature class and converts it to a GPX. Ran the model Then published it successfully after registering the folder where the PY code is. When I run the GP tool from the GIS Server connection in Arc Cat, I can see that the output GPX file is going to the jobs directory, but how can I get that file? The whole point of this is to have a simple-click-one-button tool so users can get a GPX file back on their hard drive. try:
from xml.etree import cElementTree as ET
except:
from xml.etree import ElementTree as ET
import arcpy, sys, traceback
from arcpy import env
import time, os
from subprocess import call
unicode = str
OutName = arcpy.GetParameterAsText(0)
fms = arcpy.FieldMappings()
fms.addTable("\\\\some_server\DATASTORE\GP\\PLACE FISH.sde\\FISH.DBO.FISH_BARRIERS")
FLD_STATION_NAME = arcpy.FieldMap()
FLD_STREAMNAME = arcpy.FieldMap()
FLD_EDITDATE = arcpy.FieldMap()
FLD_STATION_NAME.addInputField("\\\\some_server\DATASTORE\GP\\PLACE FISH.sde\\FISH.DBO.FISH_BARRIERS", "STATION_NAME")
STATION_NAME_MAP = FLD_STATION_NAME.outputField
STATION_NAME_MAP.name = "Name"
FLD_STATION_NAME.outputField = STATION_NAME_MAP
fms.addFieldMap(FLD_STATION_NAME)
FLD_STREAMNAME.addInputField("\\\\some_server\DATASTORE\GP\\PLACE FISH.sde\\FISH.DBO.FISH_BARRIERS", "STREAMNAME")
STREAMNAME_MAP = FLD_STREAMNAME.outputField
STREAMNAME_MAP.name = "Descript"
FLD_STREAMNAME.outputField = STREAMNAME_MAP
fms.addFieldMap(FLD_STREAMNAME)
FLD_EDITDATE.addInputField("\\\\some_server\DATASTORE\GP\\PLACE FISH.sde\\FISH.DBO.FISH_BARRIERS", "EDITDATE")
EDITDATE_MAP = FLD_EDITDATE.outputField
EDITDATE_MAP.name = "DateTimeS"
EDITDATE_MAP.type = "Text"
FLD_EDITDATE.outputField = EDITDATE_MAP
fms.addFieldMap(FLD_EDITDATE)
arcpy.FeatureClassToFeatureClass_conversion("\\\\some_server\DATASTORE\GP\\PLACE FISH.sde\\FISH.DBO.FISH_BARRIERS", "\\\\some_server\DATASTORE\GP\\", "FISH_BARRIERS.shp", "", fms)
gpx = ET.Element("gpx", xmlns="http://www.topografix.com/GPX/1/1",
xalan="http://xml.apache.org/xalan",
xsi="http://www.w3.org/2001/XMLSchema-instance",
creator="Esri",
version="1.1")
def prettify(elem):
"""Return a pretty-printed XML string for the Element.
"""
from xml.dom import minidom
rough_string = ET.tostring(elem, 'utf-8')
reparsed = minidom.parseString(rough_string)
return reparsed.toprettyxml(indent=" ")
def featuresToGPX(inputFC, outGPX, zerodate, pretty):
''' This is called by the __main__ if run from a tool or at the command line
'''
descInput = arcpy.Describe(inputFC)
if descInput.spatialReference.factoryCode != 4326:
arcpy.AddWarning("Input data is not projected in WGS84,"
" features were reprojected on the fly to create the GPX.")
generatePointsFromFeatures(inputFC , descInput, zerodate)
# Write the output GPX file
try:
if pretty:
gpxFile = open(outGPX, "w")
gpxFile.write(prettify(gpx))
else:
gpxFile = open(outGPX, "wb")
ET.ElementTree(gpx).write(gpxFile, encoding="UTF-8", xml_declaration=True)
except TypeError as e:
arcpy.AddError("Error serializing GPX into the file.")
finally:
gpxFile.close()
def generatePointsFromFeatures(inputFC, descInput, zerodate=False):
def attHelper(row):
# helper function to get/set field attributes for output gpx file
pnt = row[1].getPart()
valuesDict["PNTX"] = str(pnt.X)
valuesDict["PNTY"] = str(pnt.Y)
Z = pnt.Z if descInput.hasZ else None
if Z or ("ELEVATION" in cursorFields):
valuesDict["ELEVATION"] = str(Z) if Z else str(row[fieldNameDict["ELEVATION"]])
else:
valuesDict["ELEVATION"] = str(0)
valuesDict["NAME"] = row[fieldNameDict["NAME"]] if "NAME" in fields else " "
valuesDict["DESCRIPT"] = row[fieldNameDict["DESCRIPT"]] if "DESCRIPT" in fields else " "
if "DATETIMES" in fields:
row_time = row[fieldNameDict["DATETIMES"]]
formatted_time = row_time if row_time else " "
elif zerodate and "DATETIMES" not in fields:
formatted_time = time.strftime("%Y-%m-%dT%H:%M:%SZ", time.gmtime(0))
else:
formatted_time = time.strftime("%Y-%m-%dT%H:%M:%SZ", time.gmtime(0)) if zerodate else " "
valuesDict["DATETIMES"] = formatted_time
return
#-------------end helper function-----------------
def getValuesFromFC(inputFC, cursorFields ):
previousPartNum = 0
startTrack = True
# Loop through all features and parts
with arcpy.da.SearchCursor(inputFC, cursorFields, spatial_reference="4326", explode_to_points=True) as searchCur:
for row in searchCur:
if descInput.shapeType == "Polyline":
for part in row:
newPart = False
if not row[0] == previousPartNum or startTrack is True:
startTrack = False
newPart = True
previousPartNum = row[0]
attHelper(row)
yield "trk", newPart
elif descInput.shapeType == "Multipoint" or descInput.shapeType == "Point":
# check to see if data was original GPX with "Type" of "TRKPT" or "WPT"
trkType = row[fieldNameDict["TYPE"]].upper() if "TYPE" in fields else None
attHelper(row)
if trkType == "TRKPT":
newPart = False
if previousPartNum == 0:
newPart = True
previousPartNum = 1
yield "trk", newPart
else:
yield "wpt", None
# ---------end get values function-------------
# Get list of available fields
fields = [f.name.upper() for f in arcpy.ListFields(inputFC)]
valuesDict = {"ELEVATION": 0, "NAME": "", "DESCRIPT": "", "DATETIMES": "", "TYPE": "", "PNTX": 0, "PNTY": 0}
fieldNameDict = {"ELEVATION": 0, "NAME": 1, "DESCRIPT": 2, "DATETIMES": 3, "TYPE": 4, "PNTX": 5, "PNTY": 6}
cursorFields = ["OID@", "SHAPE@"]
for key, item in valuesDict.items():
if key in fields:
fieldNameDict[key] = len(cursorFields) # assign current index
cursorFields.append(key) # build up list of fields for cursor
else:
fieldNameDict[key] = None
for index, gpxValues in enumerate(getValuesFromFC(inputFC, cursorFields)):
if gpxValues[0] == "wpt":
wpt = ET.SubElement(gpx, 'wpt', {'lon':valuesDict["PNTX"], 'lat':valuesDict["PNTY"]})
wptEle = ET.SubElement(wpt, "ele")
wptEle.text = valuesDict["ELEVATION"]
wptTime = ET.SubElement(wpt, "time")
wptTime.text = valuesDict["DATETIMES"]
wptName = ET.SubElement(wpt, "name")
wptName.text = valuesDict["NAME"]
wptDesc = ET.SubElement(wpt, "desc")
wptDesc.text = valuesDict["DESCRIPT"]
else: #TRKS
if gpxValues[1]:
# Elements for the start of a new track
trk = ET.SubElement(gpx, "trk")
trkName = ET.SubElement(trk, "name")
trkName.text = valuesDict["NAME"]
trkDesc = ET.SubElement(trk, "desc")
trkDesc.text = valuesDict["DESCRIPT"]
trkSeg = ET.SubElement(trk, "trkseg")
trkPt = ET.SubElement(trkSeg, "trkpt", {'lon':valuesDict["PNTX"], 'lat':valuesDict["PNTY"]})
trkPtEle = ET.SubElement(trkPt, "ele")
trkPtEle.text = valuesDict["ELEVATION"]
trkPtTime = ET.SubElement(trkPt, "time")
trkPtTime.text = valuesDict["DATETIMES"]
if __name__ == "__main__":
''' Gather tool inputs and pass them to featuresToGPX
'''
inputFC = "\\\\some_server\DATASTORE\GP\\FISH_BARRIERS.shp"
outGPX = OutName
zerodate = "#"
pretty = "#"
featuresToGPX(inputFC, outGPX, zerodate, pretty)
arcpy.Delete_management("\\\\some_server\DATASTORE\GP\\FISH_BARRIERS.shp")
... View more
04-29-2016
01:35 PM
|
0
|
5
|
4241
|
|
POST
|
see https://blogs.esri.com/esri/arcgis/2014/01/24/updating-your-hosted-feature-service-for-10-2/ . I'm using a slightly tweaked version of that to update about 50 services nightly.
... View more
04-16-2016
07:28 AM
|
2
|
1
|
1593
|
|
POST
|
Based on your statement that you're only using the default version, and, emphasis on, this is my personal opinion, register the FC with "Move Edits to Base", and don't worry about triggers on the A table at all, put the trigger directly on the FC table. During an edit session, you won't see the trigger fire 'till you hit "Save Edits". That's my work flow, at least. Most of my editing is distributed (via AGISSvr Feature Service local copy for editing), and any attributing that is done by triggers is done on the backend like this. Why I like this way, is, if I ever have to unregister the FC to not-versioned, when the A table get's deleted, I don't lose a trigger I spend 2 weeks trying to get to work.
... View more
03-25-2016
12:13 PM
|
3
|
1
|
10225
|
| Title | Kudos | Posted |
|---|---|---|
| 1 | 05-17-2022 12:19 PM | |
| 1 | 03-14-2019 06:24 AM | |
| 1 | 07-12-2018 09:29 AM | |
| 1 | 06-27-2019 12:08 PM | |
| 2 | 09-23-2019 11:03 AM |
| Online Status |
Offline
|
| Date Last Visited |
04-26-2026
07:12 AM
|