|
POST
|
Thanks for looking at this. Sorry for delays, but the data extension for us to meet accessibility requirements has made this less of a priority. To answer your question... Yes, I included the pdf.includeAccessibilityTags = True and I still have the problem. In the other solution you referenced it appears that they had the same problem and used PikePdf instead of pypdf to fix the problem. The workaround is create the pdf and then use another python library to add missing accessibility such as title and language. I have done more testing with several alternatives using just ArcPro tools with Python and I have NOT been able to get the metadata that exists in the layout and language to be transferred from the ArcPro environment to the PDF . I will continue to use an external library and update the PDF after it is created in ArcPro.
... View more
yesterday
|
1
|
0
|
11
|
|
POST
|
Oregon Counties are required to produce PDF's of property taxmaps. We use a tool/python script to produce these pdfs and now must meet CAG 2.1 Level AA accessibility requirements. Using ArcPro 3.6.2, when I use the export tool from the Share Ribbon and add accessibility properties I can create a document that meets accessibility requirements when tested with AdobeAcrobatPro (has PDF metadata). But, when I use python as called from a tool and set the document metadata within the python script it does not give me an error but does not add the metadata to the document. pdf.title = "Accessor Map" # The accessibility title pdf.author = "Klamath County GIS" pdf.subject = "Asessor Map" pdf.keywords = "Assessor, Klamath, Map, 2026, Taxlots" However, it appears that other properties such as pdf.includeAccessibilityTags = True work. Am I doing something wrong or is this not available at this time???? Our work around has been to use the pypdf library to meet this requirement as follows (abbreviated code as a function - it works) : def updatePDFDOC(PDFDoc,MapToPrint): arcpy.AddMessage("pdatePDFDOC") reader = PdfReader(PDFDoc) writer = PdfWriter(clone_from=reader) writer.root_object.update({NameObject("/Lang"): TextStringObject("en-US")}) title = 'Assessor Map ' + MapToPrint writer.add_metadata({"/Title": title, "/Author": "Klamath County Assessor's Office", "/Subject": "Assessment and Taxation", "/Keywords": "Klamath County; Assessor's Office; Property Taxes", "/Lang": "en-US",}) writer.write(PDFDoc) I would rather use the ESRI tools to get this done. But don't want to waste a lot of time if this capability is not available.
... View more
04-13-2026
10:37 AM
|
0
|
2
|
291
|
|
POST
|
I would use ArcPro "Near" tool within a python script.
... View more
01-29-2026
06:01 AM
|
0
|
1
|
311
|
|
POST
|
Yep it is strange. The second rule does delete a record in the cancelled number table. It does this because of how the MERGE tool works (as explained in Amir's response) there is no way for me to update the cancelled number table correctly in one rule. Based on the merge option selected, which I need to use, it will always incorrectly adds a record for one of the parents that will still exist in active/current and is also retired. So, the second rule fixes this problem. Fortunately, the second rule does not interfere with my other use cases so it works out ok. I appreciate you checking and help with the code. Its kind of a strange problem. As to why this is needed.... In Oregon, taxlot numbers are sequentially assigned per taxlot map. The combination of the taxlot number and map number make a unique key that is used to link the map to the Assessment and Taxation System. The table of cancelled numbers contains both the mapnumber and taxlot. When a cartographer creates a new taxlot on a map they do not want to use a number that has been previously cancelled as this taxlot number (and associated taxlot account) still exists as a historical record in the Assessment and Taxation System. Now that I can maintain this table accurately, I will see if the cartographers want an insert attribute rule for taxlots that checks this table automatically, rather then them checking manually. It would be pretty simple to do. The reason taxlot numbers are not always deleted (replaced) when this type of action occurs dates back to when we had a manual system. Every time a taxlot was created staff had to create a new taxlot packet (a big job). It was whole lot faster to keep a taxlot (and its packet) and just update the information in the packet that needed to be updated. In the 80's-90's when A&T computer systems were made this practice was kept because of time and space savings on those expensive computer disks. The process is pretty engrained so doing what we do now is a standard business practice that won't be changed anytime soon (we still need those historical taxlot accounts to support a number of business activities). Sorry for the complicated answer.
... View more
07-10-2025
12:26 PM
|
0
|
0
|
1576
|
|
POST
|
This worked (I had to learn how to create a rule to delete a record in another table). As I have learned there are probably better ways to do this but it works, so that is a relief. Thanks for the help! For reference here are the two rules... Rule 1: Update cancelled number table on retire var Taxlot = $feature.MapTaxlot
var fsTaxlot = FeatureSetByName($datastore, "Taxlot", ['MapTaxlot','RetiredByRecord','CreatedByRecord'],false)
var where = Concatenate(["MapTaxlot = '", $feature.MapTaxlot,"' AND RetiredByRecord is Null"])
var fsTaxlotFilter = First(filter(fsTaxlot,where))
if (TypeOf(fsTaxlotFilter) != 'Feature'){
return { "edit": [{ "className": "CancelledNumbers",
"adds": [{ 'attributes':
{ "Taxlot": $feature.Taxlot, "MapNumber":$feature.MapNumber } }]
}]
}
} Rule 2: Delete In Cancelled Number Table var fsTaxlot = FeatureSetByName($datastore, "Taxlot", ['MapTaxlot','RetiredByRecord','CreatedByRecord'],false)
var fsCanNums = FeatureSetByName($datastore, "CancelledNumbers", ['MapNumber','Taxlot','GlobalID'],false)
var whereT = Concatenate(["MapTaxlot = '", $feature.MapTaxlot,"' AND RetiredByRecord is Null"])
var whereC = Concatenate(["MapNumber = '", $feature.MapNumber,"' AND Taxlot = '",$feature.Taxlot,"'"])
var fsTaxlotFilter = First(filter(fsTaxlot,whereT))
var fsCanNumsFilter = First(filter(fsCanNums,whereC))
if ((TypeOf(fsCanNumsFilter) == 'Feature') && (TypeOf(fsTaxlotFilter) == 'Feature')) {
var GlobalIDToDelete = [{'GLOBALID': fsCanNumsFilter.GlobalID}]
return {
"edit": [{
"className": "CancelledNumbers",
'deletes': GlobalIDToDelete
}]
}
}
... View more
07-09-2025
10:30 AM
|
1
|
0
|
1613
|
|
POST
|
That makes sense. My tests with just insert as the trigger adds the record. I have been working on a rule that deletes the record in the second table if it should not be. I was worried that this was kind of messy but that sounds like the best way to go. Thanks !
... View more
07-09-2025
05:55 AM
|
0
|
0
|
1635
|
|
POST
|
Thanks for the code and sorry I always forget to set the formatting correctly. The code provided does not work for my first use case. When I select a taxlot and set it historic it does not update the cancelled number table. By changing the conditional to be "if (TypeOf(fsTaxlotFilter) != 'Feature')" it works great for my first two use cases but again did not work when using the merge tool. It also did not work with Merge Tool when I left it at "if (TypeOf(fsTaxlotFilter) == 'Feature')"
... View more
07-08-2025
10:32 AM
|
0
|
0
|
1658
|
|
POST
|
I am using ArcPro/Fabric 3.4 in a geodatabase. When a parcel is made historic (and no longer exists in current) I want add that parcel number to a cancelled number table. My three use cases are as follows. Two work well but I can not get the third to work. Any help would be greatly appreciated. 1. If you set a Taxlot (our name for parcel) historic it should automatically update the cancelled number table. (this works) 2. If you duplicate a Taxlot and set it historic it will not update the cancelled number table. (this works) 3. If you merge two Taxlots and keep original features on so the "new" taxlot has the attributes of one of the parents then the cancelled number table should have one record in the cancelled number table for the taxlot that has been retired and no longer exists in current. . (this does not work - I get two records in the cancelled number table one record for both parents). My code for the attribute rules (executes on update trigger, exclude for application eval, and trigger field is RetiredByRecord) is as follows: // If a taxlot is set historic and no longer exists in current taxlots then the taxlot and maptaxlot are added to the cancelled number table. var fsTaxlot = FeatureSetByName($datastore, "Taxlot ['MapTaxlot','RetiredByRecord','CreatedByRecord'],false) var where = Concatenate(['MapTaxlot = ',"'", $feature.MapTaxlot,"'"," and RetiredByRecord is Null"]) var fsTaxlotFilter = filter(fsTaxlot,where) var firstFilter = First(fsTaxlotFilter) if (!isempty(firstFilter)) return //if (!isempty(filter(fsTaxlot,where))) return return { "edit": [{ "className": "CancelledNumbers", "adds": [{ 'attributes': { "Taxlot": $feature.Taxlot, "MapNumber":$feature.MapNumber } }] }] }
... View more
07-08-2025
09:55 AM
|
0
|
9
|
1684
|
|
IDEA
|
We deploy and share tasks to a number of participants in our tools development organization. When a task is imported users have the tedious 'task' of resetting the layer options for each step/task. It would be great to have a GP tool that allows a user to set the (View, Select, Edit, Snap, etc) for all or specific layers in a task step or task. That way we could ship the exported task and a GP tool (that could be quickly modified) to simplify the process of importing tasks.
... View more
02-05-2025
06:46 AM
|
0
|
0
|
455
|
|
IDEA
|
At this time when you use a task you have to assign the snapping options (Off/On/etc). This overrides the standard setting the user may have already selected for snapping. I would like to see an option where snapping is NOT set in the task and remains the same as when the task started (similar to putting a "-" for a layer option for display, select, edit, etc).
... View more
02-05-2025
06:39 AM
|
1
|
0
|
471
|
|
POST
|
I am familiar with the 3.2 field changes. But... if I did EVERYTHING in ArcPro 3.3 (created my project and map, created all feature classes, imported all tables from excel) then why is this need to be checked ? Nothing I am doing was done in ArcPro 3.1 (or earlier). I am just curious.
... View more
06-10-2024
10:15 AM
|
1
|
1
|
3847
|
|
POST
|
Wow - that fixed it. Thanks! Funny thing. This entire project creation, data loading, etc. was all done using ArcPro 3.3 start to finish. So why did I need to check this checkbox ? Anyway, I am not sure I care. I NEVER would have found this. Thanks again.
... View more
06-10-2024
05:19 AM
|
1
|
3
|
3857
|
|
POST
|
I want to check if this issue is a "feature" or a "bug". I am exporting a feature class with attributes from a related table. I figured out a workaround so will also include that. I am using ArcPro 3.3. What I have: I have a point feature class which contains many internet service point locations. I also have a table with just internet copper services. Not all point locations have a copper service but some can have two-three (different providers). I use JOIN (only keeping those that match) using a field called "Location_Id". When I look at the attributes everything looks great. I see the attributes and values from both the feature class and related table as expected. The Issue: When I export the results to a new feature class "Data --> Export Features" the new feature class contains the field definitions of the join table but all the fields have "null" values. Work Around: My work around was to create a new empty feature class containing the field definitions for the feature class and joined table. By using the editor cut/paste I was able to obtain the results I wanted. I did not use Append as the cut/paste worked. Question: Is the export data behavior I found a feature or a bug? I have not been able to find any comments on this. I was able to replicate the issue and work around with different feature classes and related tables.
... View more
06-05-2024
11:55 AM
|
1
|
5
|
4027
|
|
POST
|
It worked great - Thanks. I am not sure why mine did not but I do not care and will do a bit more research on why.
... View more
02-14-2024
08:17 AM
|
1
|
0
|
2135
|
| Title | Kudos | Posted |
|---|---|---|
| 1 | yesterday | |
| 1 | 07-09-2025 10:30 AM | |
| 1 | 02-05-2025 06:39 AM | |
| 1 | 06-10-2024 10:15 AM | |
| 1 | 06-10-2024 05:19 AM |
| Online Status |
Offline
|
| Date Last Visited |
yesterday
|