你好:
我需要帮助创建一个ArcGIS街机弹出表达式,将相交并返回在我的包裹层中任何给定包裹中发现的所有地址点。然后我想看看这些相交的地址点也在一个单独的平面表也在我的网络地图。如果是的话,我想显示该表中某个字段的值(Path字段)。我想通过使用FullAddress字段处理已经返回交叉值的现有表达式来创建新表达式。我需要的帮助是确定这些在地址点层的FullAddress字段相交的值是否也在表中的FullAddress字段,然后显示在路径字段的值,如果是的话。我的表格在地图上,叫做PDF档案:https://lacounty.maps.arcgis.com/apps/webappviewer/index.html?id=4cf18bf143c049ef84a173672e089e48
现有表达式如下。你可以点击网络地图上的任何一个包裹,看看它是如何工作的。
var addresspoints = Intersects($feature, FeatureSetByName($map,"Addresses (GIS)", ["FullAddress"]));var cnt = Count(地址点);var counter = (cnt-(cnt - 1)) var address_info = "";//验证是否有任何交叉记录,并相应处理if (cnt > 0){//至少有一个交叉记录,创建地址信息address_info = cnt + "地址(es):";//循环(var address in addresspoints)的交叉记录{//使用名称和描述创建文本var address_text = (counter++) + "。+ address.FullAddress;//将该地址的文本添加到地址信息address_info += TextFormatting。NewLine + address_text;}} else{//没有交叉记录address_info = "未找到此包裹的地址";}return address_info;
任何帮助都将不胜感激。
解决了!转到解决方案。
像这样的东西?
var addresspoints = Intersects($feature, FeatureSetByName($map,"Addresses (GIS)", ["FullAddress"]));var cnt = Count(地址点);如果(cnt == 0) {return "No addresses found for this parcel"} //加载pdf表。你至少需要Path字段和链接这个表到你的地址点的字段。我在这里使用了FullAddress,如果它是//一些其他字段,你也必须在地址点中包含它。var pdf_table = FeatureSetByName($map, "PDF", ["FullAddress", "Path"]) address_info = cnt + " Address(es):";For (var address in addresspots){//过滤你的PDF表var key = address。FullAddress //或在这里使用您的关键字段var pdf_row = First(Filter(pdf_table, "FullAddress = @key")) //或在这里使用您的关键字段//如果找到pdf,显示完整地址var pdf_path = "" if(!(pdf_row == null || IsEmpty(pdf_row))) {pdf_path = ";PDF: + pdf_row。路径}var address_text = (counter++) + "。 " + address.FullAddress + pdf_path address_info += TextFormatting.NewLine + address_text; } return address_info;
像这样的东西?
var addresspoints = Intersects($feature, FeatureSetByName($map,"Addresses (GIS)", ["FullAddress"]));var cnt = Count(地址点);如果(cnt == 0) {return "No addresses found for this parcel"} //加载pdf表。你至少需要Path字段和链接这个表到你的地址点的字段。我在这里使用了FullAddress,如果它是//一些其他字段,你也必须在地址点中包含它。var pdf_table = FeatureSetByName($map, "PDF", ["FullAddress", "Path"]) address_info = cnt + " Address(es):";For (var address in addresspots){//过滤你的PDF表var key = address。FullAddress //或在这里使用您的关键字段var pdf_row = First(Filter(pdf_table, "FullAddress = @key")) //或在这里使用您的关键字段//如果找到pdf,显示完整地址var pdf_path = "" if(!(pdf_row == null || IsEmpty(pdf_row))) {pdf_path = ";PDF: + pdf_row。路径}var address_text = (counter++) + "。 " + address.FullAddress + pdf_path address_info += TextFormatting.NewLine + address_text; } return address_info;
如果我正确理解您的问题,您有3个表/特性类:包、地址点和一个包含pdf路径的独立表。如果这是正确的,那么我张贴的代码是这样做的方式。
如果你能把pdf路径放到地址点(连接)中,这将会更容易:
var addresspoints = Intersects($feature, FeatureSetByName($map,"Addresses (GIS)", ["FullAddress", "PdfPath"]));var cnt = Count(地址点);var counter = (cnt-(cnt - 1)) if(cnt == 0){返回"未找到此包裹的地址"}address_info = cnt + "地址(es):";if(!IsEmpty(address. pdfpath)) {pdf_path = ";PDF:“+地址。PdfPath} var address_text = (counter++) + "。+地址。FullAddress + pdf_path address_info += TextFormatting。NewLine + address_text;}返回地址信息;
Find用于查找字符串中的子字符串。它对功能集没有帮助。
要在不进行另一次搜索的情况下获得pdf路径,它必须在同一个表中,因此要加入。
如果AddressPoints和PDF由一个关系类关联,你可以尝试FeatureSetByRelationshipName,也许它更快:
address_info = cnt + "地址(es):";for (var address in addresspoints){//过滤你的pdf表var pdf_row = First(FeatureSetByRelationshipName(address, "RelationshipName", ["Path"]) //如果找到pdf,显示完整地址后的路径var pdf_path = "" if(!(pdf_row == null || IsEmpty(pdf_row))) {pdf_path = ";PDF: + pdf_row。路径}var address_text = (counter++) + "。+地址。FullAddress + pdf_path address_info += TextFormatting。NewLine + address_text;}