Since the timestamp is embedded in the row key itself, you will have to use a regex like the one you mentioned in the question: Project1#Location1#raw#{??}
to filter the records. For sorting, as you can see in this documentation:
When Cloud Bigtable stores rows, it sorts them by row key in lexicographic order
So you don't have to sort it at all, just get the last position of the results of the query and it will be the record you want.
You mentioned you are considering using Python, in that case, you can check this example in the documentation for row key regex on how to get the data you want, after that all you have to do is print the last position of rows
in that example. In order to that, as discussed in the comments you can do the following code:
rows.consume_all()
data = rows.rows
print(data)
print(list(data)[-1])
Also, as discussed in the comments, if performance is an issue for you, consider using row prefixes instead of a filter on your seach as described here. The documentation says that Reads that use filters are slower than reads without filters and Restrict the rowset as much as possible is the first step on improving performance, so this might be a better approach than the one I suggested before.