I want to determine which villages lie upstream and which villages lie downstream big cities built on the side of rivers in Indonesia. I have the .shp file of villages and cities, the .shp file of all rivers in the country and some .tif files showing elevation (standard SRTM rasters, although I cannot find the exact resolution right now).
I know how to identify villages located close to rivers (using spatial join with the rivers .shp file). However, I do not know how to determine the direction of the rivers. Should I discard my rivers .shp file and try to create a Digital Elevation Model from the SRTM .tif data? Using the .tif data I just did: FLOW DIRECTION + FLOW ACCUMULATION, but the computer is stuck since 40 minutes ago and even if it works I would not know how to continue.
At the moment the river polylines are a bunch of segments divided (most of the times) by nodes. In order to intersect correctly the river polylines with the village polygons I think that the river data should have one observation for each river (rather than segment): typically the river would start at the top of a mountain and would end in the sea/ocean. I think that the share of villages intersected by more than one river would be much lower than the share of villages intersected by more than one segment.
I tried to do this by dissolving the segments by one of the two node identifiers (tnode and fnode in the attribute table). Things improved, but I definitely did not manage to get only one observation for each river (I suspect the data must be also expanded somehow and not just dissolved). This is why I left the raw data in the sample and you may have had the impression that most of the villages are cut by many rivers.
I guess that I need to find a good summer school in hydrology (or an hydrology co-author) to come out of this issue.